13:23:37 SQL> select * from tbtemp;      借方       贷款       余额
---------- ---------- ----------
       200        100        100
        50        100         50
        50        100          0已用时间:  00: 00: 00.15
13:23:43 SQL> select t.*,tt.余额+t.借方-t.贷款 yu_e from 
13:23:47   2  (select rownum id,tbtemp.* from tbtemp) t,
13:23:47   3  (select rownum+1 id,tbtemp.* from tbtemp) tt
13:23:47   4  where t.id=tt.id(+);        ID       借方       贷款       余额       YU_E
---------- ---------- ---------- ---------- ----------
         1        200        100        100
         2         50        100         50         50
         3         50        100          0          0已用时间:  00: 00: 00.15
13:23:47 SQL> 

解决方案 »

  1.   

    或者
    13:27:49 SQL> select tbtemp.*,lag(余额,1,null) over(order by rowid) + 借方-贷款  from tbtemp;      借方       贷款       余额 LAG(余额,1,NULL)OVER(ORDERBYROWID)+借方-贷款
    ---------- ---------- ---------- --------------------------------------------
           200        100        100
            50        100         50                                           50
            50        100          0                                            0已用时间:  00: 00: 00.16
    13:28:19 SQL>
      

  2.   

    update tbtemp set 余额=lag(余额,1,null) over(order by rowid) + 借方-贷款 是这样吗?
      

  3.   

    10:22:20 SQL> select * from tbtemp;      借方       贷款       余额
    ---------- ---------- ----------
           200        100        100
            50        100         50
            50        100          0已用时间:  00: 00: 00.16
    10:22:27 SQL> update tbtemp set 余额=(
    10:22:32   2  select ye from (
    10:22:32   3  select rowid rid,lag(t.余额,1,null) over(order by t.rowid)+t.借方-t.贷款 ye
    10:22:32   4  from tbtemp t) tt
    10:22:32   5  where tt.rid=tbtemp.rowid);已更新3行。已用时间:  00: 00: 00.16
    10:22:33 SQL>  select * from tbtemp;      借方       贷款       余额
    ---------- ---------- ----------
           200        100
            50        100         50
            50        100          0已用时间:  00: 00: 00.15
    10:22:35 SQL>
      

  4.   

    大侠:
    lag(t.余额,1,null) over(order by t.rowid)是啥意思呀?lag和over。
        借方       贷款       余额
    ---------- ---------- ----------
           200        100            (100)
            50        100         50
            50        100          0第一行也需要有呀
      

  5.   

    这个是一个分析函数
    update  tbtemp  set  余额=(  
    select  ye  from  (  
    select  rowid  rid,lag(t.余额,1,0)  over(order  by  t.rowid)+t.借方-t.贷款  ye  
    from  tbtemp  t)  tt  
    where  tt.rid=tbtemp.rowid);
      

  6.   

    08:45:23 SQL> select * from tbtemp;      借方       贷款       余额
    ---------- ---------- ----------
           200        100        120
            50        100         50
            50        100          0已用时间:  00: 00: 00.15
    08:45:27 SQL> update  tbtemp  set  余额=(  
    08:45:32   2  select  ye  from  (  
    08:45:32   3  select  rowid  rid,lag(t.余额,1,0)  over(order  by  t.rowid)+t.借方-t.贷款  ye
    08:45:32   4  from  tbtemp  t)  tt  
    08:45:32   5  where  tt.rid=tbtemp.rowid);已更新3行。已用时间:  00: 00: 00.16
    08:45:33 SQL> select * from tbtemp;      借方       贷款       余额
    ---------- ---------- ----------
           200        100        100
            50        100         70
            50        100          0已用时间:  00: 00: 00.16
    08:45:36 SQL>
      

  7.   

    declare @ye int 
    set @ye=0 
    update TMPDKGLHTTZCXTab set @ye=@ye+isnull(F_JFJE,0)-isnull(F_DFJE,0),F_YE=abs(@ye)如何改成Oracle得
      

  8.   

    declare
    ye number;
    begin
    ye:=0;
    update TMPDKGLHTTZCXTab --这个update语句是什么意思? 
    set @ye=ye+nvl(F_JFJE,0)-nvl(F_DFJE,0),F_YE=abs(ye);
    end;
    /
      
     
      

  9.   

    16:22:16 SQL> select * from t1;      借方       贷款       余额
    ---------- ---------- ----------
           200        100
            50        100
            50        100已用时间:  00: 00: 00.00
    16:22:22 SQL> update
    16:22:29   2    t1 c
    16:22:29   3  set
    16:22:29   4    余额=(select
    16:22:29   5        (select sum(余额) from
    16:22:29   6       (select rownum rid,借方,贷款,借方-贷款 余额 from t1) b where
    b.rid<=a.rid) 余额
    16:22:29   7  from
    16:22:29   8     (select rowid roid,rownum rid,借方,贷款,借方-贷款 余额 from t1)
     a where a.roid=c.rowid);已更新3行。已用时间:  00: 00: 00.16
    16:22:29 SQL> select * from t1;      借方       贷款       余额
    ---------- ---------- ----------
           200        100        100
            50        100         50
            50        100          0已用时间:  00: 00: 00.00
      

  10.   

    zmgowin(隐者(龙祖宗)) 和 bzszp(SongZip) 两位大侠真是太厉害了,谢谢两位的帮助。未能及时结贴,还请见谅。