尝试计算满足WHERE条件的所有记录,但也计算满足其他条件的那些记录(列为> 1的情况)
它看起来像这样:
SELECT
COUNT(*) AS BOOKINGS#,
Count(Case WHEN mNumber > 1 THEN 1 ELSE 0 END) AS MEMBERBOOKINGS
我的问题是两列都返回相同的结果(结果较小(案例))。
我确定这很容易,但我在这里挣扎。
答案 0 :(得分:3)
当您对表达式使用COUNT
时,它返回非空值的值,因为0不为空,它将被计数。
在文档中,这表示为:
COUNT(ALL表达式)计算组中每行的表达式 返回非空值的数量。
(ALL是默认选项)。
解决方案是将case表达式更改为:
COUNT(CASE WHEN mNumber > 1 THEN 1 ELSE NULL END)
-- the else branch is redundant and could be removed, but I wanted to be explicit here.
或改为使用sum
:
SUM(CASE WHEN mNumber > 1 THEN 1 ELSE 0 END)