Oracle Group By 用法之 —— Rollup (小计功能)

来源:互联网 发布:网络模特兼职 编辑:程序博客网 时间:2024/05/03 01:43

 Oracle数据库中的rollup配合group by命令使用,可以提供信息汇总功能(与"小计"相似)

表B
C1 c2
2005-01-01 1
2005-01-01 3
2005-01-02 5

要求的处理后的数据
2005-01-01 4
2005-01-02 5
合计 9
试用一个Sql语句完成。

 

这时候我们如果用group by 的话,select c1,sum(c2) from 表B group by c1

得到如下:

2005-01-01 4
2005-01-02 5

如果这时候我们在group by里配合使用Rollup,就可以像excel一样,可以统计出指定列,或者多列的总数

SQL语句如下:

select c1,sum(c2) from 表B group by rollup(c1)

执行后结果如:

2005-01-01 4
2005-01-02 5 
                      9


或者更好的

select nvl(to_char(c1,'yyyy-mm-dd'),'合计'),sum(c2)from 表B
group by rollup(c2)

这样得到的就会是
2005-01-01 4
2005-01-02 5
合计 9

PS:如果有多列要进行统计,只要在select后加上要显示的列就可以了,或者可以通过在rollup里面用 , 隔开多个列的字段名

select c1,sum(c2),c3,c4 from 表B group by rollup(c1,c3,c4)

 

 

原创粉丝点击