以下是示例表:
A | Column1 | Column2
1 5 8
1 3 2
2 6 9
2 2 5
3 1 3
这是我的问题:
Select A,count(*) as C from myTable where Column1 > 3 group by A
结果应为:
A | C
1 1
2 1
3 0
但它给了我这个排除所有0行的结果:
A | C
1 1
2 1
我想在where子句中包含不符合条件的行。
我可以做到吗?
答案 0 :(得分:2)
WHERE
子句导致A = 3
不在列表中,因为它在记录聚合之前过滤行。
SELECT A,
COUNT(CASE WHEN Column1 > 3 THEN 1 END) TotalCount
FROM myTable
GROUP BY A
输出
╔═══╦════════════╗
║ A ║ TotalCount ║
╠═══╬════════════╣
║ 1 ║ 1 ║
║ 2 ║ 1 ║
║ 3 ║ 0 ║
╚═══╩════════════╝
答案 1 :(得分:1)
你的where子句消除了它们。尝试类似:
Select A,count(case when Column1 > 3 then 1 else null end) as C from myTable group by A