t-sql - 仅按特定条件计数

标签 t-sql

我正在尝试弄清楚如何选择我的一个字段,仅当该网站处于事件状态时才能将该网站包含在计数中。但我下面的语法不正确,因为我得到的 TotalSiteCount 为 40,TotalActiveSiteCount 为 40。 TotalActiveSite 计数的实际计数应为 3,因为如果我要查看该表或在我在这里运行的查询之外对其进行单独计数(包括以下内容),我们只有 3 个状态为“事件”的站点。

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

最佳答案

进行 SUM 而不是 COUNT

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]

关于t-sql - 仅按特定条件计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7117570/

相关文章:

sql - 如何获取每个外键的最小日期记录的记录 ID?

sql - 从 SQL SERVER 中的 CTE 删除行

sql - 当 value > 1 时如何获取多行

sql - 查找并删除表中允许多次出现记录的重复行

sql-server - 将数据解析为单独的列

mysql - SQL组查询从两个表中获取数据

使用带有删除语句的交叉应用的 T-SQL

sql-server - 表锁定建议

sql - 查找不完全匹配 IN 条件列表的组

sql - 如何使此语句更快 : "paramDate Between startDate and NULL"?