手机
当前位置:查字典教程网 >编程开发 >数据库其他 >sql小计汇总 rollup用法实例分析
sql小计汇总 rollup用法实例分析
摘要:这里介绍sqlserver2005里面的一个使用实例:CREATETABLEtb(provincenvarchar(10),citynvar...

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

【sql小计汇总 rollup用法实例分析】相关文章:

SQL语句学习

数据库安装包和升级包脚本工具RedGate使用介绍

SQL中代替Like语句的另一种写法

一个查询的SQL语句请教,希望能够用一条SQL语句得到结果

写出高性能SQL语句的35条方法分析

如何让SQL运行得更快

sql Union和Union All的使用方法

sql join on 用法

如何用分表存储来提高性能 推荐

Hadoop2.X/YARN环境搭建--CentOS7.0系统配置

精品推荐
分类导航