Считать только по определенному условию - PullRequest
2 голосов
/ 19 августа 2011

Я пытаюсь выяснить, выбрано ли одно из моих полей, как я могу включить сайт в счетчик, только если сайт активен.Но мой синтаксис ниже неправильный, потому что я получаю 40 для TotalSiteCount и 40 для TotalActiveSiteCount.Фактическое количество должно быть 3 для счетчика TotalActiveSite, потому что у нас есть только 3, которые имеют статус Active, если бы я посмотрел на таблицу или сделал отдельный подсчет за пределами этого запроса, который я здесь выполняю, который включает в себя следующее.1001 *

, COUNT(*) OVER() as [TotalSiteCount]
, COUNT(CASE WHEN base.Status = 'Active' THEN 1 ELSE 0 end) OVER() as [TotalActiveSitesCount]

1 Ответ

3 голосов
/ 19 августа 2011

СУММА вместо СЧЕТА

COUNT(*) OVER() AS [TotalSiteCount], 
SUM(CASE WHEN base.Status = 'Active' THEN 1 ELSE 0 END) OVER() 
     AS [TotalActiveSitesCount]

Кроме того, NULL не учитываются, если вы используете счетчик, поэтому попробуйте

COUNT(*) OVER() AS [TotalSiteCount], 
COUNT(CASE WHEN base.Status = 'Active' THEN 1 ELSE NULL END) OVER() 
     AS [TotalActiveSitesCount]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...