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)