【发布时间】:2021-02-05 14:02:38
【问题描述】:
【问题讨论】:
-
是否还有ID列之类的?
-
什么决定了顺序?你看过
LEAD/LAG吗? -
@jarlh 是的,我有。我已经更新了问题。
-
请阅读this,了解一些改进问题的技巧。
标签: sql-server tsql
【问题讨论】:
LEAD/LAG吗?
标签: sql-server tsql
看起来你想要lead():
select col1,
lead(col1) over (order by col1) - 1
from t;
如果你想395作为最终值,你可以添加一个默认值:
select col1,
lead(col1, 1, 396) over (order by col1) - 1
from t;
【讨论】:
NULL,你可以使用第二个版本或coalesce()。
如果由于某种原因不能使用窗口函数,可以根据ID列加入:
select mt1.col1, mt2.col1 - 1 col2
from myTable mt1
left join myTable mt2 on mt1.Id = mt2.Id - 1
您只需要处理最大 Id 的行,因为它在第二列中将有 null。
【讨论】: