<b>若何给SQL查询增添合计行(1)</b>[MSSQL防范]
本文“<b>若何给SQL查询增添合计行(1)</b>[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
SQL查询是SQL数据库的核心功效,下面为您介绍给SQL查询增添合计行的办法示例,供您参考,但愿对您学习SQL查询能有所帮忙.
.数据表t_test
id 贩卖人员id 商品id 数目
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
2.需求得到的后果
需求得到近似下面的后果
--------------------------------------
emp_id qty
01 900
02 900
合计 1800
--------------------------------------
大家看到了,这里加上了一个合计列
参考sql语句以下
- -- 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查询的后果以下所示
emp_id qty_Total
1 900
2 900
Total 1800
3.负责一点,统计每个贩卖人员以及商品的数目
--------------------------------------
emp_id product_id qty
01 001 200
01 001 700
01 小计 900
02 001 400
02 002 500
02 小计 900
合计 1800
--------------------------------------
由于要统计合计以及小计,不能简单的用nvl来产生"合计"了,要用grouping函数,来判断者某行能否有rollup产生的合计行,
- select
- case when grouping(emp_id)=1 and grouping(product_id)=1 then '合计' else emp_id end emp_id,
- case when grouping(emp_id)=0 and grouping(product_id)=1 then '小计' else procudt_id end product_id,
- sum(qty) qty
- from t_test
- group by rollup(emp_id,product_id)
注意,grouping(emp_id)=1,阐明是有rollup函数生成的行,0为数据库本身有的行.
以上是“<b>若何给SQL查询增添合计行(1)</b>[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |