大家帮忙看看,一个rollup的问题
才转到mssqlserver下,算个新手,这几天开发遇到一个问题:
数据例子如下
月份 部门 人员 数量
200701 01 01 2
200701 02 01 2
200702 01 01 3
怎么能产生:
月份 部门 人员 数量
200701 01 01 2
200701 02 01 2
200701 4
200702 01 01 1
200702 1
如果用下面语句:
select 月份, 部门, 人员, sum(数量)
from test
group by 月份,部门,人员 with rollup
则会出现部门的汇总:
200701 01 01 2
200701 01 合计 2
200701 02 01 2
200701 02 合计 2
200701 4
。。。。。
以前用oracle,在里面处理很方便:
select 月份,部门,人员,sum(数量)
from test
group by rollup(月份,(部门,人员))
但试了一下,在with rollup里不支持括号,请问各人高手,
mssql里有没有类似功能?
另外,不要用 select 月份,部门+人员 这种方式,应用复杂的时候用起很恼火。
------解决方案--------------------今天才知道 group by 还可以用 with rollup 选项,真的很不错,可怜我以前还写一些很复杂的逻辑来处理
感谢楼主!!!
------解决方案--------------------create table tb(月份 varchar(6),部门 varchar(10),人员 varchar(10),数量 int)
insert into tb values( '200701 ' , '01 ', '01 ', 2)
insert into tb values( '200701 ' , '02 ', '01 ', 2)
insert into tb values( '200702 ' , '01 ', '01 ', 3)
select * from tb
union all
select 月份,部门= ' ',人员= ' ',sum(数量) 数量 from tb group by 月份
order by 月份
drop table tb
/*
月份 部门 人员 数量
------ ---------- ---------- -----------
200701 01 01 2
200701 02 01 2
200701 4
200702 01 01 3
200702 3
(所影响的行数为 5 行)
*/