繁体   English   中英

Oracle滚动或运行总计按月计算

[英]Oracle Rolling or Running totals by month

目标:每个月末所有报表的滚动/运行总计。

码:

select 
    TRUNC(ACTHX.STMT_HX_STMT_DATE, 'MM') AS MNTH, 
    COUNT(ACTHX.INVOICE) as STMTS
from ACTHX
group by
    TRUNC(ACTHX.STMT_HX_STMT_DATE, 'MM')
ORDER BY
    TRUNC(ACTHX.STMT_HX_STMT_DATE, 'MM')

电流输出:

MNTH        STMTS
7/1/2009    1
10/1/2010   4
6/1/2011    26
9/1/2011    211
10/1/2011   163
11/1/2011   119

期望的输出:

MNTH        STMTS
7/1/2009    1
10/1/2010   5
6/1/2011    31
9/1/2011    242
10/1/2011   405
11/1/2011   524

听起来你想要跑步总数。 您可以使用分析SUM函数。

select mnth,
       sum(stmts) over (order by mnth) stmts
  from (select TRUNC(ACTHX.STMT_HX_STMT_DATE, 'MM') AS MNTH, 
               COUNT(ACTHX.INVOICE) as STMTS
          from ACTHX
         group by TRUNC(ACTHX.STMT_HX_STMT_DATE, 'MM'))
 ORDER BY mnth

另一种解决方案,它提供相同的滚动总计而不需要子查询。

SELECT
        DISTINCT TRUNC(ACTHX.STMT_HX_STMT_DATE,'MM') AS MNTH
        ,count(ACTHX.INVOICE) OVER (ORDER BY TRUNC(ACTHX.STMT_HX_STMT_DATE,'MM')) AS STMTS
    FROM  ACTHX
    ORDER BY
        TRUNC(ACTHX.STMT_HX_STMT_DATE,'MM')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM