Sql 如何通过将下一行的值与上一行的值进行比较来查找下一行的值?
我有下表:Sql 如何通过将下一行的值与上一行的值进行比较来查找下一行的值?,sql,join,ssms,Sql,Join,Ssms,我有下表: 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以查找绿灯时间,但我很难计算红灯后的绿灯时间。您可以使用lag: select t.* fr
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以查找绿灯时间,但我很难计算红灯后的绿灯时间。您可以使用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';