Sql 如何对每个项目的所有行求和?

Sql 如何对每个项目的所有行求和?,sql,oracle,Sql,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

关于我先前的问题

我需要计算每个项目的价值总和

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)
SQL表表示无序集。您的累计总和假定表的顺序,这在问题中并不明显

累积和的语法为:

select t.*
       sum(cola) over (partition by col order by ?) as colb
from t;

用于表示行顺序的列(或表达式)。

列是第一项,您可以尝试下面的方法

select col, sum(col A), sum( col B) from tb group by col 按列从tb组中选择列、和(列A)、和(列B)
享受它broh

如果您只是指前一行的值(但不是总的总和),那么使用
lag
函数,该函数给出前一行的列值,如以下SQL所示:

。SQL表表示无序集。除非列指定了顺序,否则不存在“previous”行。
  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