[英]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.