1. 程式人生 > >db2中的with用法,可以實現迴圈累加

db2中的with用法,可以實現迴圈累加

 臨時表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;