22,300
社区成员




CREATE TABLE TB(ID VARCHAR(4), a1 INT, a2 INT, a3 INT, a4 INT, a5 INT)
INSERT TB
SELECT '1001', NULL, 32, NULL, 34, 35 UNION ALL
SELECT '1002', NULL, NULL, 23, 34, 35 UNION ALL
SELECT '1003', NULL, 20, 31, NULL, 33
DECLARE @STR VARCHAR(8000)
SET @STR=''
SELECT @STR=
ISNULL((SELECT TOP 1 'A1' FROM TB WHERE A1 IS NOT NULL), '')+','+
ISNULL((SELECT TOP 1 'A2' FROM TB WHERE A2 IS NOT NULL), '')+','+
ISNULL((SELECT TOP 1 'A3' FROM TB WHERE A3 IS NOT NULL), '')+','+
ISNULL((SELECT TOP 1 'A4' FROM TB WHERE A4 IS NOT NULL), '')+','+
ISNULL((SELECT TOP 1 'A5' FROM TB WHERE A5 IS NOT NULL), '')
EXEC('SELECT ID'+@STR+' FROM TB')
DROP TABLE TB
/*
ID A2 A3 A4 A5
---- ----------- ----------- ----------- -----------
1001 32 NULL 34 35
1002 NULL 23 34 35
1003 20 31 NULL 33
*/
在代码里控制吧
SQL里很难做到