Oracle 高级分组group by cube拓展

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                                                                       

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a279a8ddfdf8eccfe70e5a2aa949acc2.html