我有一张这样的表:
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查询?
答案 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
,但我不确定这是否是一个考虑因素。