有一张表格tjob,用来进行记录每个小组中的职员工种人数。
现在需要得到一张统计表格,来统计各小组各工种的人数,请问该怎么做?
————————————————————————————————————————————————
现有表tjob,结构为:
id typename number dep
1 技师 1 1小组
1 技师 3 2小组
1 技师 1 3小组
1 学徒 1 1小组
1 学徒 1 4小组
1 记录员 2 2小组
————————————————————————————————————————————————
要输出表格:
部门 | 技师 | 学徒 | 记录员
1小组 | 1 | 1 | 0
2小组 | 3 | 0 | 2
3小组 | 1 | 0 | 0
4小组 | 0 | 1 | 0
总计 | 5 | 2 | 2
------解决思路----------------------
晚上小喝几杯酒,睡不着回下贴!
declare @tjob table
(id int, typename nvarchar(10), number int, dep nvarchar(10))
insert into @tjob values
(1,'技师',1,'1小组'),
(1,'技师',3,'2小组'),
(1,'技师',1,'3小组'),
(1,'学徒',1,'1小组'),
(1,'学徒',1,'4小组'),
(1,'记录员',2,'2小组')
select isnull(dep,'合计') 部门,sum(ISNULL(技师,0)) 技师,sum(ISNULL(学徒,0)) 学徒,sum(ISNULL(记录员,0)) 记录员
from @tjob
pivot
(sum(number) for typename in(技师,学徒,记录员))b
group by grouping sets
((dep),
())
/*
部门
------解决思路----------------------
技师
------解决思路----------------------
学徒
------解决思路----------------------
记录员
1小组
------解决思路----------------------
1
------解决思路----------------------
1
------解决思路----------------------
0
2小组
------解决思路----------------------
3
------解决思路----------------------
0
------解决思路----------------------
2
3小组
------解决思路----------------------
1
------解决思路----------------------
0
------解决思路----------------------
0
4小组
------解决思路----------------------
0
------解决思路----------------------
1
------解决思路----------------------
0
总计
------解决思路----------------------
5
------解决思路----------------------
2
------解决思路----------------------
2
*/