在財務系統或者其他報表統計的功能裡我想類似下面這張報表的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:以上三個部分缺一不可