当前位置: 代码迷 >> Oracle技术 >> Oracle计算两条邻近数据ID差
  详细解决方案

Oracle计算两条邻近数据ID差

热度:622   发布时间:2016-04-24 08:06:28.0
Oracle计算两条相邻数据ID差
name    ID
张三       3
李四       6
王五      12


结果:

nam  id   差额
张三  3     3-3=0
李四  6     6- 3=3
王五  12   12- 6=6
------解决思路----------------------
分析函数lag基本用法
SQL> with t as(
  2  select '张三' A,3 B FROM DUAL UNION ALL
  3  select '李四' A,6 B FROM DUAL UNION ALL
  4  select '王五' A,12 B FROM DUAL
  5  )
  6  SELECT A,B,B-LAG(B,1,B)OVER(ORDER BY B) AS C
  7  FROM T;

A             B          C
---- ---------- ----------
张三          3          0
李四          6          3
王五         12          6

SQL>

------解决思路----------------------
over(partition by name order by name,id)
------解决思路----------------------
增加partition即可
SELECT A,B,B-LAG(B,1,B)OVER(partition by A ORDER BY B) AS C
 FROM T;

------解决思路----------------------
partition by分组加上
  相关解决方案