我有一个SQL Server查询需要计算返回的行数,但我需要忽略所有列值为NULL的行。某些行对于某些列具有NULL值,但这没关系。我只需要过滤掉那些具有ALL NULL值的那些。
现在我返回所有行并使用SqlDataReader迭代返回的行并计算我需要的行。如果可能的话,我想将其移入查询本身。
谢谢!
编辑:我想做的与此类似,但我显然很难让VS SQL编辑器识别我正在做的事情:SELECT COUNT(sd.[ID])
FROM [Some Data] sd
WHERE sd.[Data Name] = 'something' AND ((sd.q1 IS NOT NULL) OR (sd.q2 IS NOT NULL))
等。
答案 0 :(得分:4)
select count(id)
from [Some Data]
where not (Column1 is null and Column2 is null and Column3 is null ...)
答案 1 :(得分:1)
这样的事情怎么样:
从MyTable中选择Count(*) 其中Column1为非NULL且Column2为非NULL且Column3为非NULL ...
答案 2 :(得分:1)
您已经选择了答案,但这是最正确的答案,因为SQL引擎可以优化它并“短路”它。
SELECT count(id)
FROM [Some Data]
WHERE NOT (COALESCE(Column1,Column2,Column3...) is null)