例如我现在需要用case when来统计男女的总人数,但表里的数据暂时一个男的都没有,怎么也能统计出显示0呢?name  sex
小红  女
小梅  女这样用case when统计出来的是sex count
女   2我希望的是sex count
女   2
男   0

解决方案 »

  1.   

    个人觉得用decode函数更方便点
      

  2.   

    select '女' sex, sum(decode(sex,'女',1,0)) count from tb
    union all
    select '男' sex, sum(decode(sex,'男',1,0)) count from tb 
      

  3.   


    SELECT sex, SUM((CASE WHEN sex='男' THEN 1 WHEN sex='女' THEN 1 ELSE 0 END))"count"
    FROM t_name
    GROUP BY sex
      

  4.   

    T_T,我要用的是case when啊,因为这个例子是我简化了的,实际的是需要根据当前时间,每个多少秒来分组统计的,所以一定需要用到case when
      

  5.   


    SELECT '男' "sex", SUM((CASE WHEN sex='男' THEN 1 ELSE 0 END))"count"
    FROM t_name
    UNION
    SELECT '女' "sex", SUM((CASE WHEN sex='女' THEN 1 ELSE 0 END))"count"
    FROM t_name