期间    性别      组                    应发    实发   姓名      工号
4 男 CVJ品质TEAM 3520.98 4012.20 陈亮 207008
4 男 CVJ品质TEAM 2682.14 3052.16 陈小牛 207004
4 男 CVJ生产TEAM 4101.59 4675.40 黄国庆 207003
4 男 CVJ生产TEAM 3429.31 3910.35 金朝军 207017
5 男 CVJ品质TEAM 3647.34 4152.60 陈亮 207008
5 男 CVJ品质TEAM 3110.25 3527.83 陈小牛 207004
5 男 CVJ品质TEAM 2520.31 2872.35 车得彪 207038
5 男 CVJ生产TEAM 3998.91 4554.60 黄国庆 207003如何在sql中变换成
 性别  姓名  组    4月     5月
  男   陈亮       4012.20   4152.60
  男   陈小牛     3052.16   3527.83
  男   车得彪     null      2872.35
  男   金朝军     3910.35   null
这个怎么实现了?

解决方案 »

  1.   

    select 性别,组,姓名
    sum(case when 期间='4' then 实发  else 0 end) as 4月,
    sum(case when 期间='5' then 实发  else 0 end) as 5月
    from tab1
    group by 性别,组,姓名
      

  2.   

    --decode
    select 性别,组,姓名,
    sum(decode(期间,4,实发))  4月实发,     
    sum(decode(期间,5,实发))  5月实发
    from tb
    group by 性别,组,姓名
    --caseselect 性别,组,姓名,
    sum(case when 期间='4' then 实发) 4月实发,
    sum(case when 期间='5' then 实发) 4月实发
    from tb
    group by 性别,组,姓名
      

  3.   

    select 性别,组,姓名,
    sum(decode(期间,'4',实发))  4月实发,     
    sum(decode(期间,'5',实发))  5月实发
    from tb
    group by 性别,组,姓名
      

  4.   

    楼上的,你想多 了吧。。那么漂亮的MM,怎么可能做IT
      

  5.   


    -- decode
    SELECT XB,XM,ZU,SUM(DECODE(QJ,'4',SF,0)) 4月,SUM(DECODE(QJ,5,SF,0)) 5月
      FROM TABLE GROUP BY XB,XM,ZU;-- case when  
    SELECT XB,XM,ZU,SUM(CASE WHEN QJ='4'THEN SF ELSE 0 END) AS 4月,SUM(CASE QJ='5' THEN SF ELSE 0 END) AS 5月
      FROM TABLE GROUP BY XB,XM,ZU;
      

  6.   

    楼上的人们都回答了,就是case when或者decode 搞定~~