Oracle Grouping、Rollup 的簡單用法

轉發:http://www.cnblogs.com/xiaotuni/archive/2011/12/01/2365670.html

現在有一張 employee2表。

  1. select grouping(t.division_id) a,  grouping(t.job_id)   b, t.division_id, t.job_id   
  2. from employees2 t  
  3. group by rollup(t.division_id,t.job_id);  


  1. select grouping(t.division_id) a,  grouping(t.job_id)  b,  
  2.         decode(grouping(t.division_id),1,'all division',division_id)division_id,  
  3.         decode(grouping(t.job_id),1,'all job',t.job_id) job_id,sum(t.salary)   
  4. from employees2 t  
  5. group by rollup(t.division_id,t.job_id)  

rollup 是用來進行分組的。

rollup(t.division_id,t.job_id) 這句話是,的意思是 先讓 rollup(t.job_id)進行分組統計出結果,然後再對 rollup(t.division_id,t.job_id) 這兩列進行分組統計出結果。

grouping(division_id) 如果 返回值是 1 的話,那麼此行是統計出來的,否則就是正常的數據行。

此兩個函數主要是用來生成報表的時候,在最後要按分組統計時用到。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章