sql rollup用法 小计汇总_mssql2005

这里介绍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

结果:

广东 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

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

时间: 2024-09-27 01:50:40

sql rollup用法 小计汇总_mssql2005的相关文章

sql小计汇总 rollup用法实例分析_数据库其它

这里介绍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

每日学习心得:SQL查询表的行列转换/小计/统计(with rollup,with cube,pivot解析)

原文 http://www.cnblogs.com/Olive116/p/3271706.html 2013-8-20 1.    SQL查询表的行列转换/小计/统计(with  rollup,with cube,pivot解析) 在实际的项目开发中有很多项目都会有报表模块,今天就通过一个小的SQL查询统计来讲解一下实际开发中比较常用的行列转换/小计/统计等报表统计相关的常用知识点. 题目如下:  查询sales 和stores表,得出1993年每个store每季度销售数量及小计和总计,查询出的

用SQL语句生成带有小计合计的数据集脚本

使用SQL语句生成带有小计合计的数据集: 测试用户: scott 测试用表: dept,emp ////////////////////////////////// //检索出需要进行统计的数据集 select dept.dname,emp.job,sal from emp,dept where emp.deptno=dept.deptno; ////////////////////////////////// //根据部门名称以及职位进行汇总,并为每个部门 生成'小计',最后生成'合计'. s

使用sql语句直接生成带有’小计’,’合计’的数据集

在软件开发过程中经常要做一些报表,而且大部分报表都需要用到根据某一列进行统计,计算出'小计'以及'合计'项目.一般来说大家都是在前台程序中进行处理,其实,用sql语句就可以很轻松的完成这个功能.SQL> select decode(grouping(dept.dname),1,'合计:',dept.dname) dname, 2 decode(grouping(emp.job)+grouping(dept.dname),1,'小计:',emp.job) job,sum(sal) sum_sal

使用SQL实现小计,合计以及排序_Mysql

--说明:个人学习笔记,实现小计合计显示,分组按BANK_ID+OP_DATE升序排序 复制代码 代码如下: --测试数据CREATE TABLE #TB(ID VARCHAR(10),BANK_ID VARCHAR(10),OP_DATE VARCHAR(10),OPERATOR_NO VARCHAR(20),AMT DECIMAL(10,2))INSERT #TB SELECT '1111','001','20121210',1234567,111.00UNION ALL SELECT '2

SQL Server数据库的数据汇总完全解析

前言: 在论坛上经常看到有人问"如何实现数据的分类汇总",很多的人都是介绍这样或那样的控件来实现,而没有从关系数据库语言(SQL)的本身来考虑实现方法.这里,我就借一个实例来说明如何借助SQL自身强大的功能来实现数据的分类汇总. 问题的提出: 现有表A,内容如下: 编码 仓库 数量 01 A 6 01 B 7 02 A 8 02 B 9 现在想按编码查询出这种格式: \ 01 A 6 01 B 7 汇总小计: 13 02 A 8 02 B 9 汇总小计: 17 问:该如何实现? 乍一看

如何在Access2007表中同时显示明细、小计、总计

问题描述: 如何在Access2007 表中同时显示明细.小计.总计? ID fullname pay 2 a ¥500.00 4 a ¥600.00 5 a ¥700.00 6 b ¥800.00 7 b ¥55.00 有以上格式的表格,要根据 FULLNAME 做小计,然后全部的做总计,变成以下格式 fullname pay a ¥700.00 a ¥600.00 a ¥500.00 a 小计 ¥1,800.00 b ¥55.00 b ¥800.00 b 小计 ¥855.00 总计 ¥2,6

rollup-oracle分组小计总计的问题

问题描述 oracle分组小计总计的问题 一个表根据客户类别这个字段分组,有中国电信,并且分为省内省外共3行(字段取值规则是一样的),省内省外根据地域字段刷选.目前我的做法是一行一个sql然后用union处理,可是这样写太耗时耗力了,rollup貌似不能满足我的需求,请问各位大神有没有其他可行的方法 解决方案 oracle小计 解决方案二: 你倒是上图啊- -,把你的原表查询后的结构截图,还有你期望的查询结构用EXCEL画下来 解决方案三: group by 加上rollup 解决方案四: 说的

金山表格快速插入分页小计

由于工作关系经常使用金山表格2003制作工资单和工程预算,在这些表格中为了便于查看需要在每页最后一行显示分页小计.手动逐条插入分页小计显然太过麻烦了,而且也不便于修改,于是就找了一个简单的方法来快速插入分页小计. 1. 单击"文件→页面设置",切换到"工作表"选项卡,按表格的格式需要设置"顶端标题行"为4,即前4行在每张表格中重复出现.设置好页边距,然后使用打印预览确认除标题外每页可打印的行数,在此假设为16. 2. 表格数据最后增加一列(K列)