我在SQL Server 2014 Management Studio中工作。
不确定如何解释这一点,但如果我只是用一个例子来解释它是最好的。
所以我想出了如何获得下一个最低ID,这很简单。但是一旦我得到那一行,我需要从中获取值并将其应用到下一个最高值。
如果我有4行
ID value
-------------
10 50
30 200
20 75
25 100
我想获取每一行的值并应用具有下一个最高ID的行。所以看起来应该是这样的。
ID value
-------------
10 null or 0
30 100
20 50
25 75
由于10 ID之前没有行,该行的值应为null或0,无关紧要。其他人应该遵循从具有下一个最低ID的行中获取值的模式。
答案 0 :(得分:6)
您正在寻找LAG()
:
Select Id, Lag(Value) Over (Order By Id) As Value
From YourTable;
工作演示:
Declare @YourTable Table
(
Id Int,
Value Int
);
Insert @YourTable
Values (10, 50), (30, 200), (20, 75), (25, 100);
Select Id, Lag(Value) Over (Order By Id) As Value
From @YourTable;
结果
Id Value
10 NULL
20 50
25 75
30 100