name point
----------
steve 207
Mary 203
steve 205
steve 200
steve 139
Mary 300
Run Code Online (Sandbox Code Playgroud)
我想得到条件eqn = [(row + 1) - row]的行之间的区别,其中name = steve,所以我理想地希望它是,
steve 2 //207 - 0
steve 5 //205 - 207
steve 61 //200 - 205
steve 139 //139 - 200
Run Code Online (Sandbox Code Playgroud)
有代码可以找到连续行之间的差异.但是添加条件时它不起作用.
编辑到期OP评论我已更改查询以完全符合您的请求.
LAG可以帮助您:
select name,
coalesce(
point - lag( point , 1, Null ) over (order by point),
point)
as diff,
point || '-' ||
LEAD( point , 1, 0 ) over (order by point) as prev_point
from t
where name = 'steve'
order by point desc
Run Code Online (Sandbox Code Playgroud)
结果:
| NAME | DIFF | PREV_POINT |
-----------------------------
| steve | 2 | 207-0 |
| steve | 5 | 205-207 |
| steve | 61 | 200-205 |
| steve | 139 | 139-200 |
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5414 次 |
| 最近记录: |