lead函数可以返回当前记录的前一条. over是对子句重新排序,标准由括号里面的关键字决定,例如 (order by rownum)。 Oracle提供的函数确实很精妙...
lead --是下一条意思 lag --是前一条记录
强! 强在: (与下面的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”的方式仍然可以满足要求
lead函数可以返回当前记录的前一条. over是对子句重新排序,标准由括号里面的关键字决定,例如
(order by rownum)。 Oracle提供的函数确实很精妙...
lag --是前一条记录
强在:
(与下面的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”的方式仍然可以满足要求