自认为比较难的问题 希望大家帮忙解决(在线等)

mdh_zl 2007-08-14 01:56:02
有这样一组数据
日期 组织结构 发送数量
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

...全文
86 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengmou 2007-08-14
  • 打赏
  • 举报
回复
哎,晚了一步
mengmou 2007-08-14
  • 打赏
  • 举报
回复
--建立测试环境
create table #tb(日期 varchar(10),组织结构 varchar(10),发送数量 int)
insert #tb(日期,组织结构,发送数量)
select '2007-07','技术部门','1' union all
select '2007-07','总经理','1' union all
select '2007-08','总经理','2' union all
select '2007-10','技术部门','1'
go
--执行测试语句
select case when grouping(日期)= 0 then t.日期 else '合计' end as 日期
,case when grouping(组织结构) = 0 then t.组织结构
when grouping(组织结构) = 1 and grouping(日期) = 1 then '' else '小结' end as 组织结构
,sum(t.发送数量 ) as 发送数量
from #tb t
group by 日期,组织结构 with rollup
go
--删除测试环境
drop table #tb
go
/*--测试结果
日期 组织结构 发送数量
---------- ---------- -----------
2007-07 技术部门 1
2007-07 总经理 1
2007-07 小结 2
2007-08 总经理 2
2007-08 小结 2
2007-10 技术部门 1
2007-10 小结 1
合计 5

(8 row(s) affected)
*/

mdh_zl 2007-08-14
  • 打赏
  • 举报
回复
谢谢啦
子陌红尘 2007-08-14
  • 打赏
  • 举报
回复
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
*/
wgzaaa 2007-08-14
  • 打赏
  • 举报
回复
select isnull(日期,case when 组织结构 is null then '合计' else '' end),isnull(组织结构,case when 日期 is null then '' else '小结' end),sum(发送数量) from 表 group by 日期,组织结构 with rollup

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧