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

(0)

相关推荐

  • sql rollup用法 小计汇总

    这里介绍sql server2005里面的一个使用实例: CREATE TABLE tb(province nvarchar(10),city nvarchar(10),score int)INSERT tb SELECT '陕西','西安',3UNION ALL SELECT '陕西','安康',4UNION ALL SELECT '陕西','汉中',2UNION ALL SELECT '广东','广州',5UNION ALL SELECT '广东','珠海',2UNION ALL SELEC

  • 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实现统计报表中的"小计"与"合计"的方法详解

    客户提出需求,针对某一列分组加上小计,合计汇总.网上找了一些有关SQL加合计的语句.都不是很理想.决定自己动手写.思路有三个:1.很多用GROUPPING和ROLLUP来实现.  优点:实现代码简洁,要求对GROUPPING和ROLLUP很深的理解.  缺点:低版本的Sql Server不支持. 2.游标实现.  优点:思路逻辑简洁.  缺点:复杂和低效. 3.利用临时表.  优点:思路逻辑简洁,执行效率高.SQL实现简单.  缺点:数据量大时耗用内存. 综合三种情况,决定"利用临时表"

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

    --说明:个人学习笔记,实现小计合计显示,分组按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

  • MyBatis动态SQL标签用法实例详解

    1.动态SQL片段 通过SQL片段达到代码复用 <!-- 动态条件分页查询 --> <sql id="sql_count"> select count(*) </sql> <sql id="sql_select"> select * </sql> <sql id="sql_where"> from icp <dynamic prepend="where&quo

  • 30种SQL语句优化的方法汇总

    1)对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2)应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 3)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null  可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from

  • C#执行SQL事务用法实例

    本文实例讲述了C#执行SQL事务用法.分享给大家供大家参考.具体分析如下: 1.通过存储过程. 2.通过C#中提供的Transaction.这里就来演示一下通过C#中提供的Transaction 执行SQL事务. WebForm3.aspx.cs页面 复制代码 代码如下: using System;  using System.Collections.Generic;  using System.Linq;  using System.Web;  using System.Web.UI;  us

  • MyBatis使用动态SQL标签的小陷阱

    MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 现在MyBatis越来越受大家的喜爱了,它的优势大家都知道,我就不多说了,直接说重点. MyBatis中提供动态SQL功能,我们可以使用<if><when&

  • MySQL导入csv、excel或者sql文件的小技巧

    1.导入csv文件 使用如下命令: 1.mysql> load data infile "your csv file path" into table [tablename] fields terminated by ',' 上面的csv文件以','逗号作为分割符,需要用双引号或者单引号括起来.如果是以'\t'制表符作为分隔符的话,可不用显示指明域分割符. 还有一点需要注意,csv文件或者文本文件的路径要使用绝对路径,否则mysql会默认从数据库存储的目录寻找,找不到就会报如下错

  • Android使用EditText小技巧汇总

    1.隐藏android中EditText自带的的下划线 android:background="@null" 或android:background="@/drawable/bg_edittext_norma.xml" bg_edittext_norma.xml <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://s

随机推荐