2016-06-16 5 views
0

Я пытаюсь подсчитать количество нулей в столбце, используя COUNT и предложение WHERE. Результат этого запроса возвращает counts of 0, когда в таблице для Attr_620_Lookup есть нули. Я мог бы подсчитать все строки и вычесть IS NOT NULL .. но есть ли способ прямого подсчета нулей?Не удается напрямую подсчитать Nulls в SSMS

SELECT Attr_616 AS Location, COUNT(Attr_620_Lookup) 
FROM dbo.AttributesDenormalized AS ad 
WHERE (Attr_620_Lookup IS NULL) 
GROUP BY Attr_616 

ответ

2

При указании выражение в COUNT он будет считать ненулевые значения. Просто используйте COUNT(*) вместо:

SELECT Attr_616 AS Location, COUNT(*) 
FROM dbo.AttributesDenormalized AS ad 
WHERE (Attr_620_Lookup IS NULL) 
GROUP BY Attr_616 
1

Помимо того, что @DStanley упомянул вы можете также использовать случай заявление с SUM:

SELECT SUM(CASE WHEN MyField IS NULL THEN 1 ELSE 0 END) AS TheSum 
FROM TheTable 

Это было бы здорово, если бы вы имели дело с NULLS и NON NULLS, однако , предложение WHERE специально запрашивает NULL ... что означает, что мой оператор case немного лишний, как вы уже заявляли ...WHERE MyField IS NULL

+0

или аналогичные строки: SELECT COUNT (CASE, КОГДА MyField IS NULL THEN 1 END) AS TheCount FROM TheTable , –

Смежные вопросы