下面的代碼似乎對您的問題
create table sample
(
col1 varchar(10),
col2 varchar(10),
col3 varchar(10)
)
INSERT INTO sample (COL1,COL2,COL3) VALUES ('VAL1 ',' VAL2 ',NULL);
INSERT INTO sample (COL1,COL2,COL3) VALUES ('VAL3 ',' ',' VAL4');
INSERT INTO sample (COL1,COL2,COL3) VALUES ('VAL5 ',' ',' ');
DECLARE @cols1 NVARCHAR(MAX);
DECLARE @sql NVARCHAR(MAX);
SELECT @cols1 = STUFF((
SELECT ', COUNT(CASE WHEN len(['+ t1.NAME + '])!=0 THEN 1 END) AS ' + t1.name
FROM sys.columns AS t1
WHERE t1.object_id = OBJECT_ID('sample')
--ORDER BY ', COUNT([' + t1.name + ']) AS ' + t1.name
FOR XML PATH('')
), 1, 2, '');
SET @sql = '
SELECT ' + @cols1 + '
FROM sample
'
EXEC(@sql)
來源
2014-08-29 11:25:23
mhn
您需要使用動態查詢:使用'INFORMATION_SCHEMA.COLUMNS'生成查詢表 – Serpiton 2014-08-29 10:31:58
在這裏找到類似的東西http://www.sqlservercentral.com/Forums/Topic400832-392-1.aspx – mhn 2014-08-29 10:35:07