SQL - 从下一个最低ID中获取值

时间:2017-08-24 20:41:30

标签: sql sql-server sql-server-2014

我在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的行中获取值的模式。

1 个答案:

答案 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