Oracle总结以前的值

时间:2015-02-12 09:32:11

标签: sql oracle oracle11g sum

我正在尝试执行以下操作:使用此表:

DATE       VAR       
---------------
 2011      2.82          
 2012     -3.47        
 2013     -5.8        
 2014      13

我需要获得另一张表:

 DATE    VAR       ACUM    
---------------------------------------
 2011    2.82         
 2012   -3.47     -0.65      
 2013   -5.8      -6.45      
 2014    13        6.55 

即。我找到了另一个列,其中VAR值加上所有先前值的总和。

for the 2014 row....13-5.8-3.47+2.82 = 6.55
for the 2013 row....-5.8-3.47+2.82 = -6.45

等等。

1 个答案:

答案 0 :(得分:4)

使用Sum() Over()技巧查找正在运行的总数

SELECT "DATE",
       VAR,
       Sum(VAR)OVER(ORDER BY "DATE") as ACUM
FROM   Yourtable

correlated subquery

SELECT "DATE",
       VAR,
       (SELECT Sum(VAR)
        FROM   Yourtable b
        WHERE  a."DATE" > b."DATE") ACUM
FROM   Yourtable a 

不要使用 DATE 作为列名,您必须始终将其括在双引号内。而且你也可以通过这样做来区分大小写。不好的主意。