近日看到有人提了一个问题,需要更新下图中3位置的值,算法为1+2=3
看了图中的数值,我想可以用循环来实现,供参考。
首先建立一个测试表
插入测试数据,结果如下:
写一个循环来逐行更新
循环语句
更新后的结果如下图,
注意:时间最小的一行数据更新不了,需要特殊处理。
PS:第一行也可以在循环里做特殊处理得到,这里就不处理了。
![](/attachment/201411/3/205377_1414997630Q0Aa.png)
看了图中的数值,我想可以用循环来实现,供参考。
首先建立一个测试表
- create table test(
- adate date,
- zxyhs number(10),
- lcyhs number(10),
- xyh number(10),
- xzys number(10)
- );
![](/attachment/201411/3/205377_1414997624MX2F.png)
写一个循环来逐行更新
循环语句
- 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;
注意:时间最小的一行数据更新不了,需要特殊处理。
![](/attachment/201411/3/205377_1414997623okN5.png)
PS:第一行也可以在循环里做特殊处理得到,这里就不处理了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/205377/viewspace-1318817/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/205377/viewspace-1318817/