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

自认为比较难的问题 希望大家帮忙解决(在线等)
有这样一组数据
日期             组织结构               发送数量
2007-07       技术部门               1
2007-07       总经理                   1
2007-08       总经理                   2
2007-10       技术部门               1

想得到如下结构

2007-07       技术部门               1
2007-07       总经理                   1
                    小结                       2
2007-08       总经理                   2
                    小结                       2
2007-10       技术部门               1
                    小结                       1
合计                                           4



------解决方案--------------------
select isnull(日期,case when 组织结构 is null then '合计 ' else ' ' end),isnull(组织结构,case when 日期 is null then ' ' else '小结 ' end),sum(发送数量) from 表 group by 日期,组织结构 with rollup
------解决方案--------------------
declare @t table(日期 varchar(10),组织结构 varchar(10),发送数量 int)
insert into @t select '2007-07 ', '技术部门 ',1
insert into @t select '2007-07 ', '总经理 ',1
insert into @t select '2007-08 ', '总经理 ',2
insert into @t select '2007-10 ', '技术部门 ',1


select
(case when 日期 is null then '合计 ' when 组织结构 is null then ' ' else 日期 end) as 日期,
(case when 日期 is not null and 组织结构 is null then '小计 ' else 组织结构 end) as 组织结构,
sum(发送数量) as 发送数量
from
@t t
group by
日期,组织结构
with rollup


/*
日期 组织结构 发送数量
---------- ---------- -----------
2007-07 技术部门 1
2007-07 总经理 1
小计 2
2007-08 总经理 2
小计 2
2007-10 技术部门 1
小计 1
合计 NULL 5
*/