当前位置:  数据库>oracle

Oracle 使用分析函数实现小计合计

    来源: 互联网  发布时间:2017-04-21

    本文导语: select grouping(vsaltype) as sq,                          vsaltype || '小计计' vsaltype,                          sum(amount) as amount,                                    '' vvin,        ...

select grouping(vsaltype) as sq,

                         vsaltype || '小计计' vsaltype,

                         sum(amount) as amount,

                                   '' vvin,

                                    '' VPROPERTYWH,

                               '' VPROPERTYWHDESC

                              fromSPTW90_INVENTORY_NCS_TMP

                               group by rollup(vsaltype)

得到结果为:

:Oracle 使用分析函数实现小计合计[图片]

分析结论:

Grouping(上卷字段)两种情况:

SQ为0情况:只是按照vsaltype进行group by

SQ为1情况:把小计情况进行一次汇总,即别文写的 group by  rollup(A,B,C)的流程是group by (A,B,C)->

group by (A,B) ->group by (A)-> 全表,本例只是执行后两句

  select -1 as sq,

                 vsaltype,

                 amount,

                 vvin,

               VPROPERTYWH,

                 VPROPERTYWHDESC

                  

  from SPTW90_INVENTORY_NCS_TMP

得到结果为:

Oracle 使用分析函数实现小计合计[图片]

分析结论:得到所有明细数据,并赋一个新的虚拟字段sq 并设sq为-1

这样则:

select sq, vsaltype, amount, vvin, VPROPERTYWH,VPROPERTYWHDESC

 from (select sq, vsaltype, amount, vvin, VPROPERTYWH, VPROPERTYWHDESC

         from (select grouping(vsaltype) as sq,

                       vsaltype || '小计计' vsaltype,

                       sum(amount) as amount,

                       '' vvin,

                       '' VPROPERTYWH,

                       '' VPROPERTYWHDESC

                  from SPTW90_INVENTORY_NCS_TMP

                 group by rollup(vsaltype)

                union all

                select -1 as sq,

                       vsaltype,

                       amount,

                       vvin,

                       VPROPERTYWH,

                       VPROPERTYWHDESC

                  from SPTW90_INVENTORY_NCS_TMP

                 where 1 = 1) g

        where g.sq <> 1

        order by vsaltype, sq)

把sq为0,1行数与sq为-1行数进行union all

 

在where条件进行限定,取出sq非1的数据即sq<>1

So,取最终合计的话只需取出sq =1的情况

最终模型应该是这种效果(从Oracle导出Excel):

Oracle 使用分析函数实现小计合计[图片]


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 系统变量函数介绍
  • Oracle 系统变量函数用法指南
  • Oracle中decode函数的用法
  • Oracle round()函数与trunc()函数区别介绍
  • oracle中lpad函数的用法详解
  • MySQL实现类似Oracle中的decode()函数的功能
  • Oracle函数substr(str1, pos, [len])
  • Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
  • SQL中Charindex和Oracle中对应的函数Instr对比
  • apache通过php的oci函数读取Oracle(字符集ZHS16GBK)时,显示乱码,如何解决?
  • Oracle Max函数使用中出现的问题
  • oracle合并列的函数wm_concat的使用详解
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • c#中oracle to_date函数用法举例
  • Oracle 函数用法之decode
  • Oracle过程与函数的区别分析
  • Oracle层次查询和with函数的使用示例
  • oracle的nvl函数的使用介绍
  • c#中oracle的to_date函数使用方法
  • Oracle中nul()函数
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒 iis7站长之家
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,