我现在有这样的数据:
业务员编码 业务员职级 收入层级
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-----------------------------------------
业务员编码 业务员职级 收入层级
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-----------------------------------------
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 收入层级
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