今天在看《SQL Server2000 开发与管理应用实例》的时候,发现这个处理挺好
的,分级处理,感觉思路挺巧的,特别是用来分类的s1,s2,s3 代码如下,因为原代码稍微有些冗余,所以自己稍微
改动了一下。
declare @t table(Item varchar(10),Color varchar(10), Quantity int)
insert @t select 'Table','Bule',124
union all select 'Table','Red',-23
union all select 'Chair','Blue',101
union all select 'Chair','Red',-90
select item, color, Quantity
from (
select item, color,quantity,s1=0,s2=item,s3=0
from @t
union all
select '', Item+'合计', qiamtotu=sum(quantity),s1=0,s2=item,s3=1
from @t group by item
union all
select '总计','',quantity=sum(quantity),s1=1,s2='',s3=1
from @t
)a order by s1,s2,s3
Chair Blue 101
Chair Red -90
Chair合计 11
Table Bule 124
Table Red -23
Table合计 101
总计 112
当然了 RollUP还是很好用的嘛,只用根据Grouping函数区分就可以了
select item,color,quantity=sum(quantity), itemGroupFlg = grouping(item), colorGroupFlg=grouping(color)
from @t
group by item, color with rollup
Chair Blue 101 0 0
Chair Red -90 0 0
Chair NULL 11 0 1
Table Bule 124 0 0
Table Red -23 0 0
Table NULL 101 0 1
NULL NULL 112 1 1