尝试对满足WHERE条件的所有记录进行计数,但也对满足另一条件的记录的子集进行计数(列大于1的情况)
它看起来像这样:
SELECT
COUNT(*) AS BOOKINGS#,
Count(Case WHEN mNumber > 1 THEN 1 ELSE 0 END) AS MEMBERBOOKINGS
我的问题是两个列都返回相同的结果(这是较小的结果(情况))。
我敢肯定这很简单,但我在这里苦苦挣扎。
COUNT
与表达式一起使用时,它返回不为null的值的数量,并且由于0不为null,因此将对其进行计数。
在文档中,这表示为:
COUNT(ALL expression)计算组中每一行的表达式,并返回非空值的数量。
(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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句