SQL Server中Rollup关键字使用技巧
2014-05-05 15:55
465 查看
SQL Server中Rollup关键字使用技巧
首先创建测试表、添加数据。create table #t(a int,b int,c int,d int,e int)
insert into #t values(1,2,3,4,5)
insert into #t values(1,2,3,4,6)
inser tinto #t values(1,2,3,4,7)
insert into #t values(1,2,3,4,8)
insert into #t values(1,3,3,4,5)
insert into #t values(1,3,3,4,6)
inser tinto #t values(1,3,3,4,8)
inser tinto #t values(1,3,3,4,7)
insert into #t values(2,2,2,4,5)
insert into #t values(2,2,3,4,6)
insert into #t values(2,2,4,4,7)
insert into #t values(2,2,5,4,8)
insert into #t values(2,3,6,4,5)
insert into #t values(2,3,3,4,6)
insert into #t values(2,3,3,4,8)
insert into #t values(2,3,3,4,7)情况一:只有一个分类汇总列时,只需要一个合计。只需要增加with rollup即可。
select case when grouping(a)=1then'合计'else cast(a as varchar) end a,
sum(b),sum(c),sum(d),sum(e) from #t groupby a with rollup
情况二:有多个分类汇总列,只需要一个合计.增加rollup之后,需要增加判断。
select case when grouping(a)=1 then'合计'else cast(a as varchar) end a,
b,
sum(c),sum(d),sum(e) from #t
group by a,b with rollup
having grouping(b)=0 o rgrouping(a)=1
selec tcase when grouping(a)=1 then '合计' else cast(a as varchar) end a,
b,
c,
sum(d),sum(e) from #t
group by a,b,c with rollup
having grouping(c)=0 or grouping(a)=1
情况三:有多个分类汇总列,需要全部的小计和合计。
select case when grouping(a)=1 then '合计 ' else cast(a as varchar) end a,
case when grouping(b)=1 and grouping(a)=0 then'小计'else cast(b as varchar) end b,
case when grouping(c)=1 and grouping(b)=0then'小计'else cast(c as varchar) end c,
sum(d),sum(e) from #t
group by a,b,c with rollup
另外一种显示小计的方式
selectc ase when grouping(a)=1then'合计'
when grouping(b)=1then cast(a as varchar)+'小计'
else cast(a as varchar) end a,
case when grouping(b)=0 and grouping(c)=1
then cast(b as varchar)+'小计'else cast(b as varchar) end b,
case when grouping(c)=1 and grouping(b)=0
then ''else cast(c as varchar) end c,
sum(d),sum(e) from #t
group by a,b,c with rollup
情况四:有多个分类汇总列,需要部分的小计和合计
select cas ewhen grouping(a)=1 then'合计'else cast(a as varchar) end a,
b,
case when grouping(c)=1and grouping(b)=0then'小计'else cast(c as varchar) end c,
sum(d),sum(e) from #t
group by a,b,c with rollup
having grouping(a)=1or grouping(b)=0
select case when grouping(a)=1then'合计'else cast(a as varchar) end a,
case when grouping(b)=1and grouping(a)=0 then'小计'else cast(b as varchar) end b,
c,
sum(d),sum(e) from #t
group by a,b,c with rollup
having grouping(a)=1 or grouping(b)=1 or grouping(c)=0
相关文章推荐
- SQL Server中Rollup关键字使用技巧
- 【转载】SQL Server中Rollup关键字使用技巧
- SQL Server中Rollup关键字使用技巧
- SQL Server中Rollup关键字使用技巧 (转)
- SQL Server中Rollup关键字使用技巧
- SQL Server中Rollup关键字使用技巧
- SQL Server中Rollup关键字使用技巧
- SQL Server中Rollup关键字使用技巧
- SQL Server中Rollup关键字使用技巧
- SQL Server中Rollup关键字使用技巧(统计功能)
- SQL Server中Rollup关键字使用技巧
- Rollup关键字使用技巧
- Notepad++ 使用技巧之关键字高亮、自动补全
- ACCESS中使用SQL语句应注意的地方、与sql server的区别及几点技巧(整理中)
- SQL Server汇总使用GROUPING,ROLLUP和CUBE
- SQL Server 2005新特性之使用with关键字解决递归父子关系
- SQL Server 2005新特性之使用with关键字解决递归父子关系
- Sql Server 存储过程使用技巧
- PL/SQL使用技巧——让你写的SQL关键字大写
- [SharePoint Designer技巧-1]使用DataView与Form Web Part实现列表的关键字查询