db2中的with用法,可以实现循环累加

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012209894/article/details/47026089

 临时表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;

 
 
 
 
 
 

猜你喜欢

转载自blog.csdn.net/u012209894/article/details/47026089
今日推荐