Oracle很实用的汇总报表实现方式!grouping_id

系统 1980 0

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

 

 

 

 

Oracle很实用的汇总报表实现方式!grouping_id、rollup的使用


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论