当前位置: 首页 > 图文教程 > 数据库 > 数据库技巧 > sql小计汇总 rollup用法实例分析

数据库技巧
一个查询的SQL语句请教,希望能够用一条SQL语句得到结果
交叉表查询sql语句
ms SQL server数据库备份、压缩与SQL数据库数据处理的方法
DBCC SHRINKDATABASEMS SQL数据库日志压缩方法
SQLSERVER 高级复 制 排错 技巧
识别 MS SQL 各个版本的版本号的方法
数据库查询中遭遇特殊字符导致问题的解决方法
替换一个字段的所有非数字字符为空的sql语句
用SQL Server访问Sybase中的表的方法
掌握SQL Server数据库快照的工作原理
mssql 区分大小写的详细说明
Sybase数据库sa密码丢失后解决方法
特殊的存储过程-触发器概述
MSSQL内连接inner join查询方法
很全的SQL中文解释代码
SQL Server不存在或访问被拒绝问题的解决
比较实用SQL语句总结
SQL SERVER的字段类型说明
sql server中datetime字段去除时间代码收藏
Access转换成SQL Server需要注意事项整理

数据库技巧 中的 sql小计汇总 rollup用法实例分析


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 61 ::
收藏到网摘: n/a

rollup在oracle ,sql-server里面都有有。 这里介绍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