Oracle很實用的匯總報表實現方式!grouping_id、rollup的使用

來源:互聯網
上載者:User

在財務系統或者其他報表統計的功能裡我想類似下面這張報表的case很多,有了grouping_id函數之後會輕鬆easy實現,不菲催費之力

 

序號     項     目 上年 本年   增減  
日均餘額 成本率 日均餘額 成本率 日均餘額 成本率
     總     計            
銀行借款            
1 用於商業票據額度            
  國家開發銀行            
2 其它授信額度            
  國家開發銀行            
  美國銀行            
集團拆入            
總部拆入            

 

解析:此表是三級匯總,銀行匯總到額度(商業額度、其他額度),各種額度匯總到拆入方式(銀行借款、集團拆入、總部拆入)、拆入方式匯總總計。grouping_id可以實現N級逐級匯總

用法:

案例

select grouping_id(loan.nborrowtype,
                   loan.nfinancetype,
                   loan.ncounterpartyid) groupid,
       sum(bal.mbalance) / 365 currentYearAvg,
  from billbalance trans
 where 1 = 1
 group by rollup(loan.nborrowtype, loan.nfinancetype, loan.ncounterpartyid)
 order by loan.nborrowtype     desc,
          loan.nfinancetype    desc,
          loan.ncounterpartyid desc

解析:grouping_id(filed1,field2,field3....),區分欄位,函數會根據第一個欄位的分組來作為一級顯示,即上表的拆入類型。類推,第二個欄位是二級顯示即拆入方式。。。。

、 group by rollup(filed1,field2,field3....)、分組欄位,同上

order by loan.nborrowtype     desc,loan.nfinancetype    desc,loan.ncounterpartyid desc,此處desc說明是合計列在顯示行的上面,如需合計列顯示在下面向下匯總,改成asc即可。。

ps:以上三個部分缺一不可

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.