numaralı sütun adları içeren birleştirilmiş dizeye dönüştürülüyor Yüzlerce sütun genişliğinde bir tablom var. Her bir satırı, sorgudaki her bir sütunu listelemeye gerek kalmadan içerilen sütun başlığı ile tek bir birleştirilmiş dizeye dönüştürmenin bir yolu var mı? Bazılarını bir sorgu ile yaptım, ancak bu her sütun için yapmak zahmetli ve hataya eğilimli görünüyor.Satır,
SELECT
Concat(
IIf(Id IS NULL, Null, Concat('Id: ' , [Id] , '\n')) ,
IIf(StandardClientId IS NULL, Null,
Concat('StandardClientId: ' , [StandardClientId] , '\n')) ,
IIf(ClientName IS NULL, Null,
Concat('ClientName: ' , [ClientName] , '\n'))
) AS ReportLine
FROM dbo.DataDecoded;
Microsoft SQL Server 2014 Standard kullanıyorum: Burada kolon-by-sütunda yaklaşımında yapılan ihtiyacım formatında birleştirilmiş üç sütun gösteren kısa snippet'idir.
SELECT ORDINAL_POSITION,
COLUMN_NAME,
CONCAT('IIF(',COLUMN_NAME,' IS NULL, NULL, CONCAT(''', COLUMN_NAME, ''', '': '',', QUOTENAME(COLUMN_NAME), ', ''\n'')), ')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'DataDecoded'
ORDER BY ORDINAL_POSITION;
Bir adım daha ileri sürebilir ve her şeyi yapmak:
Teşekkür
Bu, sunum katmanında çok daha kolay bir şekilde gerçekleştirilebilir. Bu bilgiyi görüntülemek için ne kullanıyorsunuz? –
Muhtemelen dinamik SQL ile veya sorguyu "INFORMATION_SCHEMA.COLUMNS" sorgulayarak yapılandırabilirsiniz, ancak uygulamanızda bu biçimlendirmeyi neden yapmıyorsunuz? Neyi başarmaya çalıştığını anlamıyorum. Neredeyse tabloyu UNPIVOT yapmaya çalıştığınız gibi görünüyor. –
Seçilen her satırın raporlarını yazdırmak için bunu kullanıyorum. Her satır bir oluşum raporunu temsil eder ve her sütun rapordaki bir alanı temsil eder. Bu nedenle, belirli bir raporu anlamaya çalışan insanlar, bu şekilde ortaya konmuş olmalıdır. – rsjaffe