go
--删除测试的临时表
drop table #t
/*--测试结果
项目名称 项目年度 地市 申请单位 支持金额
---------- -------------- -------------- -------------- -----------
名称1 2004 省直 1公司 400
1公司合计 400
名称2 2004 省直 2公司 300
2公司合计 300
省直合计 700
名称3 2004 石家庄 3公司 200
3公司合计 200
石家庄合计 200
2004合计 900
名称3 2005 石家庄 3公司 100
3公司合计 100
石家庄合计 100
2005合计 100
总计 1000
(所影响的行数为 14 行)
--*/
--上面是按项目年度,地市,申请单位做小计,总计的
--下面是只按项目年度,地市做小计,总计的,比较一下,更容易看出规律
--下面是处理
select 项目名称,项目年度,地市,申请单位,支持金额
from( --这是实现汇总的部分(不考虑小计,总计处理部分的汇总)
select *
,s1=0,s2=项目年度,s3=0,s4=地市,s5=0 --这是排序需要的
from #t
union all
--这是实现汇总的小计,总计部分
select 项目名称=case
when grouping(项目年度)=1 then '总计'
else '' end
,项目年度=case
when grouping(项目年度)=0