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

分层分组汇总问题
有数据表Tbl,字段有 Debt(部门)、Grp(组)、Name(姓名)、Score(得分),表中有如下数据:  
  Debt(部门) Grp(组) Name(姓名) Score(得分)
  部门1 组1 员工1 1
  部门2 组1 员工2 3
  部门1 组2 员工3 2
  部门1 组1 员工4 1

  希望首先按Debt分组汇总Score,每一组再按Grp分组汇总Score,结果集应该是:  
  Debt(部门) Grp(组) Score(得分)
  部门1 4
  部门1 组1 2
  部门1 组2 2
  部门2 3
  部门2 组1 3

  SQL语句是怎样的?  


------解决方案--------------------
SQL code
create table tb(Debt varchar(10),Grp varchar(10),Name varchar(10),Score int)
insert into tb values('部门1',        '组1',      '员工1',         1) 
insert into tb values('部门2',        '组1',      '员工2',         3) 
insert into tb values('部门1',        '组2',      '员工3',         2) 
insert into tb values('部门1',        '组1',      '员工4',         1)
go

select isnull(debt,'合计') debt,isnull(grp,'') grp,sum(score) score from tb group by  debt,grp with rollup order by debt

drop table tb

/*
debt       grp        score       
---------- ---------- ----------- 
部门1      组1         2
部门1      组2         2
部门1                  4
部门2      组1         3
部门2                  3
合计                   7
*/