【发布时间】:2021-10-22 19:55:31
【问题描述】:
我有一个 case 语句将多个条件放入一个字段中。
Select
*,
case
when day <= 30 then 'Expiration < 30 days'
when day between 31 and 60 then 'Expiration between 31 and 60 days'
when day between 61 and 90 then 'Expiration between 61 and 90 days'
when day > 90 then 'Expiration > 90 days'
end Expiration_Version
from
tb1;
在指定 case 条件后,我需要在这里计算每个条件的计数,但我遇到的一个问题是,如果特定条件没有返回结果,那么 case when 语句将不包括该条件。即使没有结果,我也希望所有条件都返回。在这种情况下,计数将为 0。
当前状态: 如果有一个条件不满足,比如没有少于 30 天的过期,“过期
Expiration Version Count
Expiration between 31 and 60 day xx
Expiration between 61 and 90 days xx
Expiration > 90 days xx
我喜欢什么:
Expiration Version Count
Expiration < 30 days 0
Expiration between 31 and 60 day xx
Expiration between 61 and 90 days xx
Expiration > 90 days xx
【问题讨论】:
-
day = 30的值会发生什么?? -
一个 hacky 方法是将 4 个查询合并在一起。
-
@Isolated 我想过这个问题。但是 union 共享相同的字段,然后我会在过期版本中丢失其他 3 个类别
-
应该可以工作.... select 'expires in 30' as exp_group, count(id) from table where day