网站更新内容:请访问: https://bigdata.ministep.cn/

SQL的case when 不可重叠

SQL的case when 不可重叠;

SQL的case when 其子条件是互斥的,如果存在重叠,就会优先排定前面的;

如果需要重叠,暂时就不用case when ,可以直接用union all 解决;

BUG 重现;

 select *
    ,case 
          when ds between '20201125' and '20201205' then '1125~1205'
          
          when ds between '20201202' and '20201211' then '1202~1211'
          
          else '其他' end as  weekly_range
from (select date_id as ds 
,date
from dim_calendar )t 
where ds between '20201125' and '20201212'

结果

image-20201223162150153

可以明显看到:1202、1203、1204、1205 这几个日期重叠了,会优先被判定到1125~1205这个范围内;

因此:如果使用 case when 子条件不能有重叠,如有重叠,就会导致意向不到的结果;

posted @ 2022-02-09 19:33  ministep88  阅读(1544)  评论(0编辑  收藏  举报
网站更新内容:请访问:https://bigdata.ministep.cn/