如何给SQL查询添加合计行

数据库 SQL Server
数据库中最常用的功能就是查询,下面将以实例的形式为您介绍给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.  
  13. select *   
  14. 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.  
  3. case when grouping(emp_id)=1 and grouping(product_id)=1 then '合计' else emp_id end emp_id,  
  4.  
  5. case when grouping(emp_id)=0 and grouping(product_id)=1 then '小计' else procudt_id end product_id,  
  6.  
  7. sum(qty) qty  
  8.  
  9. from t_test  
  10.  
  11. group by rollup(emp_id,product_id)  
  12.  

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

 

 

 

【编辑推荐】

巧用sql替换语句

sql条件语句使用实例

SQL强类型查询的实现

SQL查询效率的讨论

SQL动态查询的示例

责任编辑:段燃 来源: 互联网
相关推荐

2022-05-04 18:26:25

PDF水印Python

2022-10-17 00:00:00

SQLMySQL数据,

2010-09-07 14:22:41

SQL语句

2014-02-14 13:57:22

UbuntuWindowsMac

2018-03-12 09:52:22

Linux命令rm

2013-11-15 14:11:17

Ubuntu 13.1菜单

2021-10-13 08:16:14

SQL 代码系统

2020-07-13 07:10:09

SQLSQL语句查询

2015-09-10 16:57:49

字体发行版Linux

2010-09-07 16:17:49

SQL语句

2011-05-05 11:12:11

EFSQL

2010-09-26 13:56:43

SQL远程查询

2017-09-07 16:20:39

SQL查询语句查询优化

2016-12-15 09:58:26

优化SQL高性能

2017-07-12 13:04:23

数据库SQL查询执行计划

2010-09-16 15:56:15

SQL Server表

2009-04-20 15:54:04

SQL Server重复行

2022-03-01 21:25:30

对象代码Proxy

2010-03-15 13:18:15

ubuntu虚拟机

2013-11-15 15:46:16

Nagios地图
点赞
收藏

51CTO技术栈公众号