如何在单表Count查询中包含0结果(无需关联其他表)
解决CustomerLog单表统计包含计数为0的需求
原查询通过WHERE CompletedState = 'Succeeded'过滤掉了非成功状态的记录,导致没有成功记录的Code(如1099)无法出现在结果集中。要实现包含计数为0的统计且无需关联其他表,可以使用条件聚合的方式改写SQL:
select code, count(case when CompletedState = 'Succeeded' then 1 end) as Successes from CustomerLog group by Code
说明:
- 移除原WHERE子句,避免提前过滤掉非成功状态的记录;
- 用
CASE表达式在COUNT函数内做判断:仅当CompletedState等于'Succeeded'时返回1,否则返回NULL; COUNT函数会自动忽略NULL值,因此没有成功记录的Code会统计出0的结果,同时保留所有存在于表中的Code。
内容的提问来源于stack exchange,提问作者Dan Goodwin
相关产品推荐
相关产品推荐

