如何在sql developer(oracle)中将两行的值作为值添加到另一列

时间:2018-04-25 09:35:57

标签: sql oracle oracle11g

我有一张这样的表:

S.No | (C1) |  (C2)  | (C3) | 
-----------------------------------------------
1    |  A   |   10    |  10  | (I want 10 here)
-----------------------------------------------
2    |  B   |   20    |  0   | (I want 30 here)
-----------------------------------------------
3    |  C   |   30    |  0   | (I want 60 here)
-----------------------------------------------
4    |  D   |   40    |  0   | (I want 100 here)
-----------------------------------------------

如何为此编写ORACLE查询?

1 个答案:

答案 0 :(得分:0)

据推测,你想要窗口功能。如果你想要select

select t.*, sum(c2) over (partition by s_no) as c3
from t;

如果要修改数据,则很难将此逻辑放入update。如果数据不大,一种方法是使用相关子查询:

update t
    set c3 = (select sum(t2.c3) from t t2 where t2.s_no <= t2.s_no);

对于较大的数据,您可能希望使用merge,但我不确定这是否是一个考虑因素。