SQL CASE

SELECT L.id, L.name, L.zero_three_num, L.four_six_num, seven_nine_num, ten_or_more_num, 
  (L.zero_three_num+L.four_six_num+seven_nine_num+ten_or_more_num) total 
FROM (SELECT r.id, r.name, 
      CASE ISNULL(s.zero_three_num,'')--处理null值,因为null与任务数相加都是null,这样结果集无法排序. 
        WHEN '' THEN 0 ELSE s.zero_three_num  --如果不是null值则,使用原来的值. 
      END zero_three_num,--0至3岁人的数量 
      CASE ISNULL(s.four_six_num,'') 
        WHEN '' THEN 0 ELSE s.four_six_num 
      END four_six_num,--4至6岁 
      CASE ISNULL(s.seven_nine_num,'') 
        WHEN '' THEN 0 ELSE s.seven_nine_num 
      END seven_nine_num,-- 7至9岁 
      CASE ISNULL(s.ten_or_more_num,'') 
        WHEN '' THEN 0 ELSE s.ten_or_more_num 
      END ten_or_more_num --10岁以上 
    FROM gos_region r 
      LEFT OUTER JOIN 
        (SELECT t.${region_id_macro}, 
          SUM( 
          CASE 
            WHEN  t.child_age IN (0,1,2,3) THEN 1 ELSE 0 
          END) zero_three_num,--0至3岁人的数量 
          SUM( 
          CASE 
            WHEN t.child_age IN (4,5,6) THEN 1 ELSE 0 
          END) four_six_num, --4至6岁 
          SUM( 
          CASE 
            WHEN t.child_age IN (7,8,9) THEN 1 ELSE 0 
          END) seven_nine_num, -- 7至9岁 
          SUM( 
          CASE 
            WHEN t.child_age >=10 THEN 1 ELSE 0 
          END) ten_or_more_num --10岁以上 
          
        FROM "Xxx_INFO" t 
         WHERE to_char(t.publish_date, 'yyyy-MM-dd') >= ? 
           and to_char(t.publish_date, 'yyyy-MM-dd') <= ? AND t.publish_state='1' 
        GROUP BY t.${region_id_macro} 
        ) s 
        ON r.id = s.${region_id_macro} 
      WHERE ${g2s_region_where} AND r.use2_flag=1 
  ) L 
ORDER BY total DESC;

posted @   letmedown  阅读(106)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示