仅选择列不为空

时间:2014-03-02 01:07:26

标签: sql-server

我遇到有关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

1 个答案:

答案 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,则必须添加一项检查,表明至少已选择了一列。