select value-lead(value,1,0) over(order by rownum) from tmp

解决方案 »

  1.   

    请问lead(value,1,0) over(order by rownum)是什么意思?
      

  2.   


     lead函数可以返回当前记录的前一条. over是对子句重新排序,标准由括号里面的关键字决定,例如
     (order by rownum)。 Oracle提供的函数确实很精妙...
      

  3.   

    lead   --是下一条意思
    lag    --是前一条记录
      

  4.   

    强!
    强在:
    (与下面的SQL语句相比:
    SELECT B.value-A.value value_diff FROM tmp A, tmp B WHERE B.no=A.no+1 ORDER BY A.no;)
    1、效率高:不需要双表查询或者嵌套查询
    2、适应性强:在tmp表中的记录中(因为删除操作)出现id值不连续的情形下,
    “select value-lead(value,1,0) over(order by rownum) from tmp”的方式仍然可以满足要求