问题描述
我需要编写一个查询,其中我需要显示 0,其中源系统今天没有发送任何数据,如果我使用 count(*)
编写简单查询,它不会为我提供任何行。我正在使用 case 语句但没有成功显示实际计数。
select SRC_SYS,case
when ( select count (*) from table1 where SRC_SYS ='A')='0' then '0'
else count(1) end as Count
解决方法
当我有数据时,它不显示实际计数
呃……不,确实不会;它会显示“1”,因为只有一行;您count(1)
处理的数据集只有一行
只需从实际表中进行计数;是否有 0 行或更多行都可以正常工作,因为选择列表仅包含常量或聚合:
select 'A' as SRC_SYS,COUNT(*)
from table1
where SRC_SYS ='A'
或者如果您的前端正在使用参数:
select @pwhatever as SRC_SYS,COUNT(*)
from table1
where SRC_SYS = @pwhatever
查看 this fiddle 并将 where 1=0
更改为 where 1=1
以查看计数变化