sql rollup用法 小计汇总

2016-02-19 11:13 5 1 收藏

下面图老师小编跟大家分享sql rollup用法 小计汇总,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~

【 tulaoshi.com - 编程语言 】

这里介绍sql server2005里面的一个使用实例:

CREATE TABLE tb(province nvarchar(10),city nvarchar(10),score int)
INSERT tb SELECT '陕西','西安',3
UNION ALL SELECT '陕西','安康',4
UNION ALL SELECT '陕西','汉中',2
UNION ALL SELECT '广东','广州',5
UNION ALL SELECT '广东','珠海',2
UNION ALL SELECT '广东','东莞',3
UNION ALL SELECT '江苏','南京',6
UNION ALL SELECT '江苏','苏州',1
GO

1、 只有一个汇总

select province as 省,sum(score) as 分数 from tb group by province with rollup

结果:

广东 10
江苏 7
陕西 9
NULL 26

select case when grouping(province)=1 then '合计' else province end  as 省,sum(score)  as 分数 from tb group by province with rollup

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

结果:

广东 10
江苏 7
陕西 9
合计 26

2、两级,中间小计最后汇总

select province as 省,city as 市,sum(score) as 分数 from tb group by province,city with rollup

结果:

广东 东莞 3
广东 广州 5
广东 珠海 2
广东 NULL 10
江苏 南京 6
江苏 苏州 1
江苏 NULL 7
陕西 安康 4
陕西 汉中 2
陕西 西安 3
陕西 NULL 9
NULL NULL 26

select province as 省,city as 市,sum(score) as 分数,grouping(province) as g_p,grouping(city) as g_c from tb group by province,city with rollup

结果:

广东 东莞 3 0 0
广东 广州 5 0 0
广东 珠海 2 0 0
广东 NULL 10 0 1
江苏 南京 6 0 0
江苏 苏州 1 0 0
江苏 NULL 7 0 1
陕西 安康 4 0 0
陕西 汉中 2 0 0
陕西 西安 3 0 0
陕西 NULL 9 0 1
NULL NULL 26 1 1

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

select case when grouping(province)=1 then '合计' else province end 省,
       case when grouping(city)=1 and grouping(province)=0 then '小计' else city end 市,
       sum(score)  as 分数
         from tb group by province,city with rollup

结果:

广东 东莞 3
广东 广州 5
广东 珠海 2
广东 小计 10
江苏 南京 6
江苏 苏州 1
江苏 小计 7
陕西 安康 4
陕西 汉中 2
陕西 西安 3
陕西 小计 9
合计 NULL 26

来源:http://www.tulaoshi.com/n/20160219/1596801.html

延伸阅读
标签: SQLServer
  外联接。外联接可以是左向外联接、右向外联接或完整外部联接。 在 FROM 子句中指定外联接时,可以由下列几组关键字中的一组指定: LEFT JOIN 或 LEFT OUTER JOIN。 左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选...
标签: SQLServer
  HAVING 用户在使用SQL语言的过程中可能希望解决的一个问题就是对由sum或其它集合函数运算结果的输出进行限制。例如,我们可能只希望看到Store_Information数据表中销售总额超过1500美圆的商店的信息,这时我们就需要使用HAVING从句。语法格式为: SELECT "column_name1", SUM("column_name2") FROM "table_name" GROUP BY "colum...
说明:下文中的一些说明和示例代码摘自CSDN,恕不一一指明出处,在此一并对相关作者表示感谢! 1 语法 在Oracle中,可以创建以下两种临时表: 1) 会话特有的临时表 CREATE GLOBAL TEMPORARY ( ) ON COMMIT PRESERVE ROWS; 2) 事务特有的临时表 CREATE GLOBAL TEMPORARY ( ) ON COMMIT DELETE ...
标签: 电脑入门
近来系统之家的图老师小编发现,很多Linux初学者对free命令不是很了解,其实Linux下free命令主要用于查看当前系统内存的使用情况,具体的随图老师小编一起来了解下吧。 free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常使用的命令之一 1.命令格式: f...
标签: SQLServer
前言: 在论坛上经常看到有人问“如何实现数据的分类汇总”,很多的人都是介绍这样或那样的控件来实现,而没有从关系数据库语言(SQL)的本身来考虑实现方法。这里,我就借一个实例来说明如何借助SQL自身强大的功能来实现数据的分类汇总。 问题的提出: 现有表A,内容如下:        编码 仓库...

经验教程

821

收藏

98
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部