Oracle的cube拓展功能会将cube()里指定的每一列按照顺序替换成null值,并返回指定列的所有组合。
oracle的cube分组拓展主要用于替换需要通过union all和goup by 组合来实现业务功能的场景。通过该函数可以节省代码量,且使代码更加简洁。
实验过程如下:
首先看一下A表的内容:
HR@ORA11GR2 > select * from a;
A A2 A3
---------- ---------- ----------
1 4 5
2 4 6
3 4 7
4 5 9
5 5 10
6 5 11
7 5 12
8 5 13
8 rows selected.
若要通过union all 来实现数据组合功能:
HR@ORA11GR2 > with temp as (
2 select a, a2 from a
3 union all
4 select a , null a2 from a
5 union all
6 select null a , a2 from a
7 union all
8 select null a , null a2 from a
9 )
10 select * from temp group by a, a2 order by a2 desc;
A A2
---------- ----------
1
2
3
4
5
6
7
8
4 5
5 5