У меня есть запрос SQL Server, который должен подсчитывать количество возвращаемых строк, но мне нужно игнорировать строки, где все значения столбца NULL. Некоторые строки имеют значения NULL для некоторых столбцов, но это нормально. Мне просто нужно отфильтровать те, у которых есть ВСЕ значения NULL.
Сейчас я возвращаю все строки и используя SqlDataReader, итерацию возвращаемых строк и подсчет тем, которые мне нужны. Я хотел бы переместить это в сам запрос, если это возможно.
Спасибо!
EDIT: То, что я пытаюсь сделать, похоже на это, но мне, судя по всему, трудно заставить редактор 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))
и т.д..
select count(id)
from [Some Data]
where not (Column1 is null and Column2 is null and Column3 is null ...)
Вы уже выбрали ответ, но это наиболее правильно, он должен быть самым быстрым, потому что SQL Engine может его оптимизировать и "коротко закоротить".
SELECT count(id)
FROM [Some Data]
WHERE NOT (COALESCE(Column1,Column2,Column3...) is null)
isnumber(col) and cast(col as int) = 1
когда у вас есть что-то вроде isnumber(col) and cast(col as int) = 1
Как насчет чего-то вроде этого:
Выберите Count (*) из MyTable Где Столбец1 НЕ НУЛЛ И Столбец2 НЕ НУЛЛ И Столбец3 НЕ НУЛЛ...