主页 > 知识库 > 数据库 > Oracle >

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

来源:中国IT实验室 作者:佚名 发表于:2013-05-15 14:48  点击:
在财务系统或者其他报表统计的功能里我想类似下面这张报表的case很多,有了grouping_id函数之后会轻松easy实现,不菲催费之力 序号 项目 上年 本年 增减 日均余额 成本率 日均余额 成本率 日均余额 成本率 总 计 一 银行借款 1 用于商业票据额度 国家开发银行
在财务系统或者其他报表统计的功能里我想类似下面这张报表的case很多,有了grouping_id函数之后会轻松easy实现,不菲催费之力    序号                   项  目        上年      本年       增减
    日均余额   成本率     日均余额      成本率     日均余额 成本率
    总     计
    一 银行借款
    1 用于商业票据额度
    国家开发银行
    2 其它授信额度
    国家开发银行
    美国银行
    二 集团拆入
    三 总部拆入
    解析:此表是三级汇总,银行汇总到额度(商业额度、其他额度),各种额度汇总到拆入方式(银行借款、集团拆入、总部拆入)、拆入方式汇总总计。grouping_id可以实现N级逐级汇总
    用法:
    案例
    select grouping_id(loan.nborrowtype,
    loan.nfinancetype,
    loan.ncounterpartyid) groupid,
    sum(loan.mbalance) / 365 currentYearAvg,
    from billbalance loan
    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:以上三个部分缺一不可

    有帮助
    (0)
    0%
    没帮助
    (0)
    0%