关于我之前的问题How to use the result of previous row in oracle?
我需要对每个项目的值求和。
Col | Col A | Col B
Item1 1 | 1 (col A)
Item1 2 | 3 (colA + prevColB)
Item1 3 | 6 (colA + prevColB)
Item2 1 | 1 (colA)
Item2 4 | 5 (colA + prevColB)
Item2 3 | 8 (colA + prevColB)
答案 0 :(得分:3)
SQL表表示无序集。您的累加总和假设表格的顺序,这在问题中不明显。
累积总和的语法为:
select t.*
sum(cola) over (partition by col order by ?) as colb
from t;
?
用于表示行顺序的列(或表达式)。
答案 1 :(得分:0)
col是我的东西,你可以尝试下面的
select col, sum(col A), sum( col B) from tb group by col
享受吧
答案 2 :(得分:0)
如果您的意思是仅前一个行的值(而不是总和),则使用lag
函数,该函数给出前一行的列的值,如以下 SQL :
select colA, colA+
lag(colA,1,0) over (partition by Col order by Col ) as ColB
from tab;
COLA COLB
1 1
2 3
3 5
1 1
4 5
3 7