Я разрабатываю запрос в 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... etc:
1346116
1346131
1346425
1346923
1349935
1350115
1350153
2594787
2821944
2879631
COUNT
и больше ничего? - person Quassnoi   schedule 03.02.2010