当前位置: 代码迷 >> Sql Server >> sqlserver中,要进行表格统计输出,请教该如何做
  详细解决方案

sqlserver中,要进行表格统计输出,请教该如何做

热度:65   发布时间:2016-04-24 09:58:09.0
sqlserver中,要进行表格统计输出,请问该怎么做?
本帖最后由 thronichak 于 2014-09-17 21:50:03 编辑
有一张表格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
*/
  相关解决方案