id     num
       1      43
       2       3
       3      33
       4       2
       5      -7这是表里的数据,假如我想要这样一个查询查询出所有数据且增加一列这列为此列以上的所有列的num之和
查询出结果应为:
      id     num     sum
       1      43      43
       2       3      46
       3      33      79
       4       2      81
       5      -7      74
请问这样的sql能实现么,如何实现(注:不能用游标等过程才能用到的函数,仅仅是一句查询语句)
小弟才从mssql转来oracle,不甚了解,希望高人指点

解决方案 »

  1.   


    SQL> with table1 as(
      2  select 1 id, 43 num from dual
      3  union all
      4  select 2, 3 from dual
      5  union all
      6  select 3, 33 from dual
      7  union all
      8  select 4, 2 from dual
      9  union all
     10  select 5, -7 from dual
     11  )
     12  select id,num,sum(num)over(order by id) from table1
     13  /        ID        NUM SUM(NUM)OVER(ORDERBYID)
    ---------- ---------- -----------------------
             1         43                      43
             2          3                      46
             3         33                      79
             4          2                      81
             5         -7                      74SQL> 
      

  2.   

    分析函数
    select id,num,
      sum(num)over(order by id)sum
    from table1