SQL-запрос, игнорируя все строки, которые имеют все нулевые столбцы - PullRequest
2 голосов
/ 22 января 2010

У меня есть запрос 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)) 

и т.д ..

Ответы [ 3 ]

4 голосов
/ 22 января 2010
select count(id)
from [Some Data]
where not (Column1 is null and Column2 is null and Column3 is null ...)
1 голос
/ 22 января 2010

Вы уже выбрали ответ, но это наиболее правильный, он должен быть самым быстрым, потому что SQL Engine может его оптимизировать и «замкнуть».

SELECT count(id)
FROM [Some Data]
WHERE NOT (COALESCE(Column1,Column2,Column3...) is null)
1 голос
/ 22 января 2010

Как насчет этого:

Выберите количество (*) в MyTable Где Столбец1 НЕ НЕДЕЙСТВИТЕЛЕН, а Столбец2 НЕ НУЖЕН И Столбец3 НЕ НУЛЬ ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...