我现在有这样的数据:
业务员编码   业务员职级  收入层级
  1001          3            6
  1002          2            2
  1003          1            3
  1004          2            4..........
其中业务员职级分为: 1-专员,2-高级专员,3-主管,4-经理 四个职级
收入层级分:0-5k(1级), 5k-1w(2级),1-2w(3级)
2-5w(4级),5-10w(5级),5w以上(6级)
现在我想显示这样的结果 
层级   专员  高级专员  主管  经理   总的
0-5k    20人    1人      0人  1人    22人 
1-2w
2-5w
5-10w
10w-----------------------------------------

解决方案 »

  1.   

     select decode(收入层级,1,'0-5k',
                            2,'5k-1w',
                            3,'1-2w',
                            4,'2-5w',
                            5,'5-10w',null) 工资层级,
            count(decode(业务员职级,1,1,null)) 专员,
            count(decode(业务员职级,2,1,null)) 高级专员,
            count(decode(业务员职级,3,1,null)) 主管,
            count(decode(业务员职级,4,1,null)) 经理,
            count(*) 总的
     from tb
     group by 收入层级
      

  2.   


    with tab as(
    select '1001' code, 3 grade, 6 lv from dual
    union all
    select '1002', 2, 2 from dual
    union all
    select '1003', 1, 3 from dual
    union all
    select '1004', 2, 4 from dual
    union all
    select '1005', 2, 5 from dual
    union all
    select '1006', 2, 4 from dual
    union all
    select '1007', 1, 4 from dual
    union all
    select '1008', 1, 5 from dual
    union all
    select '1009', 2, 4 from dual)                            
    SELECT CASE 
               WHEN lv = 1 THEN '0-5k'
               WHEN lv = 2 THEN '5k-1w'
               WHEN lv = 3 THEN '1-2w'
               WHEN lv = 4 THEN '2-5w'
               WHEN lv = 5 THEN '5-10w'
               ELSE '5k-1w'
           END 层级,
           Sum(Decode(grade,1,1,0)) 专员,
           Sum(Decode(grade,2,1,0)) 高级专员, 
           Sum(Decode(grade,3,1,0)) 主管, 
           Sum(Decode(grade,4,1,0)) 经理,
           Count(*) 总计 
    FROM tab
    GROUP BY lv --结果:
    层级   专员  高级专员 主管  经理  总计
    5k-1w  0      1       0      0    1
    1-2w   1      0       0      0    1
    2-5w   1      3       0      0    4
    5-10w  1      1       0      0    2  
    5k-1w  0      0       1      0    1