如何给SQL查询添加合计行

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

 
 
 
  1. Create table #t_test(
  2. id int not null,
  3. emp_id int not null,
  4. product_id int not null,
  5. qty int not null
  6. )
  7. insert into #t_test values(1,01,001,200)
  8. insert into #t_test values(2,01,002,300)
  9. insert into #t_test values(3,01,002,400)
  10. insert into #t_test values(4,02,001,400)
  11. insert into #t_test values(5,02,002,500)
  12. select * 
  13. from #t_test

#p#

2.需要得到的结果

需要得到类似下面的结果

--------------------------------------

emp_id                    qty

01                           900

02                           900

合计                        1800

--------------------------------------

大家看到了,这里加上了一个合计列

参考sql语句如下

 
 
 
  1. -- for MS SQL Server 2005
  2. select isnull(CONVERT(varchar(20), emp_id),'Total') as 'emp_id' 
  3.     ,sum(qty) as 'qty_Total'
  4. from #t_test
  5. group by emp_id
  6. with rollup

SQL查询的结果如下所示

emp_id qty_Total

1     900
2     900
Total   1800#p#

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产生的合计行,

 
 
 
  1. select
  2. case when grouping(emp_id)=1 and grouping(product_id)=1 then '合计' else emp_id end emp_id,
  3. case when grouping(emp_id)=0 and grouping(product_id)=1 then '小计' else procudt_id end product_id,
  4. sum(qty) qty
  5. from t_test
  6. group by rollup(emp_id,product_id)

注意,grouping(emp_id)=1,说明是有rollup函数生成的行,0为数据库本身有的行。

分享文章:如何给SQL查询添加合计行
分享链接:http://www.shufengxianlan.com/qtweb/news45/310695.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联