SQL> select addr from tb;      ADDR
----------
         1
         1
         2
         2
         3
         4
         5
         6
         7
         3已选择10行。SQL> SELECT addr,sum(addr) over(order by addr  ROWS UNBOUNDED PRECEDING) from tb;      ADDR SUM(ADDR)OVER(ORDERBYADDRROWSUNBOUNDEDPRECEDING)
---------- ------------------------------------------------
         1                                                1
         1                                                2
         2                                                4
         2                                                6
         3                                                9
         3                                               12
         4                                               16
         5                                               21
         6                                               27
         7                                               34已选择10行。

解决方案 »

  1.   

    SQL> update tb set name=(select sumaddr from (
      2  SELECT rowid rid, addr,sum(addr) over(order by addr  ROWS UNBOUNDED PRECEDING) as sumaddr
      3  from tb) t where t.rid=tb.rowid);已更新10行。SQL> select addr,name from tb;      ADDR NAME
    ---------- ---------------
             1 1
             1 2
             2 4
             2 6
             3 9
             4 16
             5 21
             6 27
             7 34
             3 12已选择10行。SQL>
      

  2.   

    哪位高人能介绍一下sum() 后面的over()的用法
    今天第一次看到over()
    google上也没查到相关用法:(