近日看到有人提了一个问题,需要更新下图中3位置的值,算法为1+2=3
看了图中的数值,我想可以用循环来实现,供参考。
首先建立一个测试表
-
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:第一行也可以在循环里做特殊处理得到,这里就不处理了。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/205377/viewspace-1318817/
,如需转载,请注明出处,否则将追究法律责任。