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 子條件不能有重疊,如有重疊,就會導致意向不到的結果;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM