在财务系统或者其他报表统计的功能里我想类似下面这张报表的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:以上三个部分缺一不可