SQL Server计算case的数量

6
我在 SQL Server 中有一个表,例如有如下数值:
1
2
2
2
1
2

我想计算值为1的出现次数,所以我的示例查询结果应该是2。
我尝试过...
count (case status_d when 1 then 1 end) as COUNT_STATUS_1 

但结果是4,而不是2。

2
您的查询应该可以正常工作。 - Martin Smith
2
您的查询在 SQL Fiddle(http://www.sqlfiddle.com/#!6/f25b6)中返回2。 - Gordon Linoff
2个回答

15

您可以使用WHERE子句来实现这一点。

SELECT COUNT(*) As Total_Ones
FROM TABLE_NAME
WHERE ColumnName = 1

或者您也可以使用 case 语句

SELECT COUNT(CASE WHEN ColumnName = 1 THEN 1 ELSE NULL END) As Total_Ones
FROM TABLE_NAME

1
第二个例子使用SUM(CASE WHEN ColumnName = 1 THEN 1 ELSE 0 END)不是更好吗? - Giannis Paraskevopoulos
1
不要认为这会有任何区别,因为无论哪种情况下它都会将1添加到返回值中。 - M.Ali
COUNT(CASE ...) 对我来说无法正常工作,我需要将其更改为SUM(CASE...)。 - Machet

0
SELECT COUNT(*) 
FROM YourTable
WHERE status_d = 1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接