我遇到有关MS SQL的问题。
这是我的表:
column_a column_b column_c column_d
NULL NULL NULL 1
NULL 1 NULL 1
NULL 1 NULL NULL
NULL NULL NULL NULL
我想编写一个产生此输出的查询:
column_b column_d
NULL 1
1 1
1 NULL
NULL NULL
答案 0 :(得分:1)
回答您的问题,而不会质疑您为什么要这样做。您可以使用动态SQL
执行此操作DECLARE @sqlQuery VARCHAR(200)
SELECT @sqlQuery = 'SELECT '
IF EXISTS (SELECT column_a FROM myTable WHERE column_a IS NOT NULL)
SELECT @sqlQuery = @sqlQuery + 'column_a, '
IF EXISTS (SELECT column_b FROM myTable WHERE column_b IS NOT NULL)
SELECT @sqlQuery = @sqlQuery + 'column_b, '
IF EXISTS (SELECT column_c FROM myTable WHERE column_c IS NOT NULL)
SELECT @sqlQuery = @sqlQuery + 'column_c, '
IF EXISTS (SELECT column_d FROM myTable WHERE column_d IS NOT NULL)
SELECT @sqlQuery = @sqlQuery + 'column_d, '
SELECT @sqlQuery = SUBSTRING(@sqlQuery, 0, LEN(@sqlQuery)) + ' FROM myTable'
EXECUTE(@sqlQuery)
如果每行中的每一列都可能是null
,则必须添加一项检查,表明至少已选择了一列。