我尝试让这个工作查询返回0作为值,如果没有找到行并且count为0。
我已经尝试了IFNULL与一个零,coalesce和'then 1 else 0',但没有任何工作,我只是得到空白行。
在db2中查询:
select
cust,
'PRIOR' as Range,
coalesce(count(case when fordate between '2017-01-01' and '2017-04-13' then 1
else 0 end),0)as count
from table1
where cust = 123
3条答案
按热度按时间dl5txlt91#
对于
COUNT
调用的ELSE
条件,您应该计算NULL
,然后在计算中忽略它:请注意,我省略了实际的
ELSE
条件,因为如果没有显式指定,默认值为NULL
。此外,我将WHERE
条件移到了条件计数中。这样做的效果是,即使该客户根本没有出现在表中,也始终返回一行。选择
cust
看起来很奇怪,因为您要对整个表进行计数。lawou6xi2#
如果您的表中没有客户123的行,则需要“生成”这样一行。
或者可以使用LEFT OUTER JOIN
hmtdttj43#
我有一个类似的问题,我想报告满足一个条件的行数。