Oracle计算两条相邻数据ID差

H_Gragon 2014-12-31 11:31:11
name ID
张三 3
李四 6
王五 12


结果:

nam id 差额
张三 3 3-3=0
李四 6 6- 3=3
王五 12 12- 6=6
...全文
522 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
H_Gragon 2015-01-08
  • 打赏
  • 举报
回复
谢谢各位!
  • 打赏
  • 举报
回复
partition by分组加上
bw555 2015-01-06
  • 打赏
  • 举报
回复
增加partition即可
SELECT A,B,B-LAG(B,1,B)OVER(partition by A ORDER BY B) AS C
 FROM T;
ccjk311 2015-01-06
  • 打赏
  • 举报
回复
over(partition by name order by name,id)
H_Gragon 2015-01-06
  • 打赏
  • 举报
回复
引用 1 楼 bw555 的回复:
分析函数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>
谢谢,非常感谢,这种怎么实现呢 name ID 差额 张三 3 0 张三 6 3 张三 12 6 李四 9 9-9=0 而不是9-6 只有name相同的才计算差额 李四 15 15-9=6 李四 19 19-15=4 王五 10 10-10=0 王五 12 12-10=2
bw555 2014-12-31
  • 打赏
  • 举报
回复
分析函数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>

3,492

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧