Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何通过将下一行的值与上一行的值进行比较来查找下一行的值?_Sql_Join_Ssms - Fatal编程技术网

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';