【问题标题】:SQL - Get the value from the next lowest IDSQL - 从下一个最低 ID 获取值
【发布时间】:2018-02-02 20:42:01
【问题描述】:

我正在使用 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

由于 ID 10 之前没有行,因此该行的值应该为 null 或 0,没关系。其他人应该遵循从具有下一个最低 ID 的行中获取值的模式。

【问题讨论】:

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


    【解决方案1】:

    你正在寻找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
    

    【讨论】:

    • 哇,这真的很整洁,从来不知道这个,因为它没有在 SSMS 中显示为关键字(蓝色字体)。我想我可以用这个解决我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 2023-01-10
    • 2012-01-14
    相关资源
    最近更新 更多