SELECT * FROM TEST;
OID    VALUE
1      100
2      200
3      300
4      400
6      500
9      600
.      .
.      .
SELECT SUM(VALUE) AS RESULT FROM TEST;这个只能得到所有的VALUE的相加的结果2100。
现在我想把OID按升序排列,然后每两条记录的value相加,
现希望用SELECT语句得到如下的记录集怎么做?
OID   sum
1     300  (上面的100和200相加的结果)
2     700
3     1100
要是用到存储过程的话,又是怎么做?

解决方案 »

  1.   

    已连接到 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 SQL> select * from test1;       OID      VALUE
    ---------- ----------
             1        100
             2        200
             3        300
             4        400
             6        500
             9        6006 行 已选择SQL> ed
    SQL> select rownum,value+nvalue as sum from
      2  (select oid,value,lead(value) over(order by oid) nvalue,
      3  row_number() over(order by oid) rn
      4  from test1)
      5  where mod(rn,2)=1
      6  /    ROWNUM        SUM
    ---------- ----------
             1        300
             2        700
             3       1100SQL>