如何給SQL查詢添加合計(jì)行
SQL查詢是SQL數(shù)據(jù)庫(kù)的核心功能,下面為您介紹給SQL查詢添加合計(jì)行的方法示例,供您參考,希望對(duì)您學(xué)習(xí)SQL查詢能有所幫助。
.數(shù)據(jù)表t_test
id 銷售人員id 商品id 數(shù)量
id emp_id product_id qty
1 01 001 200
2 01 002 300
2 01 002 400
3 02 001 400
4 02 002 500
- Create table #t_test(
- id int not null,
- emp_id int not null,
- product_id int not null,
- qty int not null
- )
- insert into #t_test values(1,01,001,200)
- insert into #t_test values(2,01,002,300)
- insert into #t_test values(3,01,002,400)
- insert into #t_test values(4,02,001,400)
- insert into #t_test values(5,02,002,500)
- select *
- from #t_test
#p#
2.需要得到的結(jié)果
需要得到類似下面的結(jié)果
--------------------------------------
emp_id qty
01 900
02 900
合計(jì) 1800
--------------------------------------
大家看到了,這里加上了一個(gè)合計(jì)列
參考sql語(yǔ)句如下
- -- for MS SQL Server 2005
- select isnull(CONVERT(varchar(20), emp_id),'Total') as 'emp_id'
- ,sum(qty) as 'qty_Total'
- from #t_test
- group by emp_id
- with rollup
SQL查詢的結(jié)果如下所示
emp_id qty_Total
1 900
2 900
Total 1800#p#
3.負(fù)責(zé)一點(diǎn),統(tǒng)計(jì)每個(gè)銷售人員以及商品的數(shù)量
--------------------------------------
emp_id product_id qty
01 001 200
01 001 700
01 小計(jì) 900
02 001 400
02 002 500
02 小計(jì) 900
合計(jì) 1800
--------------------------------------
由于要統(tǒng)計(jì)合計(jì)以及小計(jì),不能簡(jiǎn)單的用nvl來(lái)產(chǎn)生"合計(jì)"了,要用grouping函數(shù),來(lái)判斷者某行是否有rollup產(chǎn)生的合計(jì)行,
- select
- case when grouping(emp_id)=1 and grouping(product_id)=1 then '合計(jì)' else emp_id end emp_id,
- case when grouping(emp_id)=0 and grouping(product_id)=1 then '小計(jì)' else procudt_id end product_id,
- sum(qty) qty
- from t_test
- group by rollup(emp_id,product_id)
注意,grouping(emp_id)=1,說(shuō)明是有rollup函數(shù)生成的行,0為數(shù)據(jù)庫(kù)本身有的行。
【編輯推薦】