手机
当前位置:查字典教程网 >编程开发 >数据库其他 >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用法实例分析】相关文章:

Maven nexus 安装nexus私服出现的问题和解决办法

sql2005可实时监测数据库版本控制SQL的触发器

错误代码:1100 Table 't_depart_info' was not locked with LOCK TABLES的解决方法

OLEDB和ODBC的区别(优缺点)

NoSQL 数据库你应该了解的 10 件事

Sql Server 和 Access 操作数据库结构Sql语句小结

SQLServer与Oracle常用函数实例对比汇总

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

SQL大量数据查询的优化及非用like不可时的处理方案

Access转SqlServer的注意事项

精品推荐
分类导航