db2中的with用法,可以實現迴圈累加
阿新 • • 發佈:2019-01-01
臨時表session.TEMP是如下的格式
khdxdh jylsh dffse jffse zhye1 num zhye
1 1 10 0 10 1 20
1 55 10 0 10 2 30
1 55 10 0 10 3 40
1 88 10 5 10 4 45
zhye這個欄位是要求你求的 等於上一條記錄的zhye+下一條的dffse-下條jffse
通過以下的with as語句可以實現累加,先查出num=1的記錄作為sel,然後和表 session.TEMP做合併,db2的不可以使用join連線 只好
select * from session.TEMP a,sel b 這種合併的方式啦。
</pre><p></p><pre name="code" class="sql">insert into session.TMP_DFZHJL(khdxdh,jylsh,zhye) with sel(khdxdh,jylsh,zhye,num) as ( select khdxdh,jylsh,(zhye1+dffse-jffse) as zhye,num from session.TEMP where num=1 union all select a.khdxdh,a.jylsh,(b.zhye+a.dffse-a.jffse) as zhye,a.num from session.TEMP a,sel b where a.num=b.num+1 and a.khdxdh=b.khdxdh ) select khdxdh,jylsh,zhye from sel;