日期:2014-05-17  浏览次数:20313 次

数据统计sql
数据表table1
   部门    时间    级别   A类  B类
   部门A   ..        1                是
   部门B   ..        2        是   
   部门C   ..        2                是
   部门C   ..        3        是
 
想统计各个部门 是A类和B类的数据次数
 以上的数据 A类 部门A为0次 部门B为1次 部门C也为一次
 B类  部门A为一次  部门B为0次  部门C为1次
  这种效果 经高人指点已经实现  代码如下:
select 部门,A类=sum(case when A类='是' then 1 else 0 end),
            B类=sum(case when B类='是' then 1 else 0 end)
 from tb group by 部门 

现在 再想把以上稍作调整 
A类       所有部门为2次 部门A为0次 部门B为1次 部门C也为1次
B类       所有部门为2次  部门A为1次  部门B为0次  部门C为1次
A类和B类    一共4次         一共1次         1次            2次

这样可以把上面的sql 做下调整吗?
------最佳解决方案--------------------
select isnull(部门,'所有类'),A类=sum(case when A类='是' then 1 else 0 end),
             B类=sum(case when B类='是' then 1 else 0 end)
  from tb group by 部门 with rollup
------其他解决方案--------------------
结果是什么。
------其他解决方案--------------------
引用:
结果是什么。

就像这种
              所有部门    A部门       B部门      C部门      D部门
   A类               2            0              1            1             0    
   B类               2            1              0            1             0
   所有类          4            1              1            2