Я создаю запрос в SSMS 2005, который выглядит примерно так:
SELECT COUNT(DISTINCT ColumnName) FROM Table WHERE ColumnName IS NOT NULL
Когда я запускаю запрос с COUNT (), он возвращает значение 1. Когда я запускаю его без COUNT (), SSMS сообщает правильное значение, например, 212 записей.
Данный столбец имеет числовой тип данных (16, 0).
Для тех, кто может спросить, полный запрос:
SELECT COUNT(DISTINCT O_ID) FROM vEmployers
INNER JOIN vEnrolment ON O_ID = E_EnrolmentEmployer
WHERE E_START >= '01-AUG-2008' AND E_START < '01-AUG-2009'
AND O_ID IS NOT NULL AND O_ID IN (
SELECT O_ID FROM vEmployers
INNER JOIN vEnrolment ON O_ID = E_EnrolmentEmployer
WHERE E_Start < '01-AUG-2008' and E_Start >= '01-AUG-2007'
)
Этот запрос в основном дает повторяющиеся цифры между двумя 12-месячными периодами.
Так что мне интересно, почему "COUNT (DISTINCT ColumnName)" возвращает 1, когда было указано "ColumnName IS NOT NULL"?
Вот пример данных, когда выполняется SELECT TOP 10 DISTINCT ColumnName FROM ... и т. Д .:
1346116
1346131
1346425
1346923
1349935
1350115
1350153
2594787
2821944
2879631