
看了图中的数值,我想可以用循环来实现,供参考。
首先建立一个测试表
- create table test(
-
adate date,
-
zxyhs number(10),
-
lcyhs number(10),
-
xyh number(10),
- xzys number(10)
- );

写一个循环来逐行更新
循环语句
-
declare
-
cursor adate_cursor is
-
select to_char(d.adate,\'yyyymmdd\') aadate from test d;
-
begin
-
for r in adate_cursor loop
- update test a set a.zxyhs=a.xyh+(select nvl(b.zxyhs,0) from test b where b.adate=trunc(a.adate)-1)
-
where to_char(a.adate,\'yyyymmdd\')=r.aadate;
-
commit;
-
end loop;
- end;
注意:时间最小的一行数据更新不了,需要特殊处理。

PS:第一行也可以在循环里做特殊处理得到,这里就不处理了。