【问题标题】:How to find next row's value by comparing it to the previous value?如何通过将下一行的值与前一个值进行比较来找到下一行的值?
【发布时间】:2021-02-28 00:01:06
【问题描述】:

我有下表:

ID | Light | TIME
1    Red     8:30
1    Red     9:05
1    Green   9:30
2    Red     7:21
2    Green   7:24
3..

我想在红灯发生后获得绿灯时间。 例如:

ID | Time
1    9:30
2    7:24
...

我尝试在 tb1.id = tb2.id+1 上创建连接表 tb1 和 tb2 以找到绿灯的时间,但我很难确定红灯后发生的绿灯时间。

【问题讨论】:

    标签: sql join ssms


    【解决方案1】:

    你可以使用lag():

    select t.*
    from (select t.*,
                 lag(light) over (partition by id order by time) as prev_light
          from t
         ) t
    where light <> 'Green' or prev_list <> 'Red';
    

    【讨论】:

      猜你喜欢
      • 2016-10-14
      • 1970-01-01
      • 2015-09-19
      • 2013-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-24
      • 2021-10-06
      相关资源
      最近更新 更多