SQL Server 2000, получить COUNT (DISTINCT ID) с условием, которое я не могу записать в свой WHERE? - PullRequest
4 голосов
/ 05 марта 2010

Прежде всего, я не хочу использовать «соединение», потому что это сделает мой запрос более длинным и трудным для чтения. То, что мне нужно сделать, должно заключаться в том же операторе SELECT.

Мои столбцы в myTable: A, B, C, D, время, ID и H

H columnd сообщает, является ли запись «Открытой» или «Закрытой», вот как выглядит мой запрос.

SELECT 
A, 
B, 
C, 
D,
COUNT(DISTINCT ID) AS numberOfRecords,
SUM(time) / COUNT(DISTINCT ID) AS averageTimeOfAllRecords   
FROM myTable
WHERE ISNUMERIC(A)=1 AND A IN (SELECT A FROM myTable2)
GROUP BY A,B,C,D

Мне нужен запрос выше, чтобы вернуть другой столбец с результатом: COUNT (DISTINCT ID) WHERE H = 'Open', чтобы я мог получить numberOfOpenRecords.

Я не могу записать свое новое условие в «WHERE», потому что это повлияет на результаты, например, numberOfRecords.

Надеюсь, я объяснил свою проблему.

Спасибо за помощь.

1 Ответ

9 голосов
/ 05 марта 2010

Поскольку count не учитывает null значений, вы можете:

count(distinct case when H = 'Open' then id else null end)
...