Oracle 求和以前的值

Oracle sum previous values

我正在尝试执行以下操作:有了这个 table:

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

我需要得到另一个table:

 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

等等。

使用 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 作为列名,您必须始终将其括在双引号内。并且您还通过这样做使其区分大小写。坏主意。