日期:2014-05-18  浏览次数:20565 次

如何实现分组统计
有三张表 【数据均为例子,可能不是很准,就是表达这个意思,呵呵】
1、第一张表故障类型表typeinfo
故障类型字段(GzID) 故障类型字段(GzNAME)
1 网路故障
2 打印机故障 
3 复印机故障
4 传真机故障
 

2、第二张表地区表Areainfo
故障类型字段(AreaID) 故障类型字段(AreaNAME)
a1 东城区
a2 北城区
a3 西城区
a4 南城区


3、第三张表业务类型表signinfo 如下  
  故障类型字段(GzType) 故障地区字段(GzArea)
  1 a1
  2 a1
  3 a2
  4 a3
  1 a1  
  2 a2
  3 a3
  4 a4
  1 a1
  2 a1
  3 a2
  4 a3
  1 a1  
  2 a2
  3 a3
  4 a4


 。。。。。。


想得到以下的结果显示列表,如下
代维公司 网路故障 打印机故障 传真机故障 复印机故障 总计
东城区 3 2 1 0 6
西城区 3 2 1 0 6
南城区 3 2 1 0 6
北城区 3 2 1 0 6
总计 12 8 4 24


怎么实现呢,我的思路是分组统计,再建立临时表插入。可是这好像不止一个分组。谢谢,在线等。




------解决方案--------------------
SQL code
select isnull(t.AreaNAME , '总计') 代维公司,
       sum(case m.GzNAME when '网路故障' then 1 else 0 end) 网路故障,
       sum(case m.GzNAME when '打印机故障' then 1 else 0 end) 打印机故障,
       sum(case m.GzNAME when '复印机故障' then 1 else 0 end) 复印机故障,
       sum(case m.GzNAME when '传真机故障' then 1 else 0 end) 传真机故障,
       count(1) 总计
from Areainfo t , typeinfo m , signinfo n
where t.AreaID = n.GzArea and n.GzType = m.GzID
group by  t.AreaNAME with rollup