SQL:根据时间戳连接顺序事件

时间:2016-06-23 18:52:09

标签: sql join sql-server-2012

我有一张桌子,上面有关于在城市周围行驶的公共汽车的信息。每条记录代表一个公共汽车到达公共汽车站的事件,公共汽车id,停止id,到达时间(军事时间,以秒为单位)和出发时间(军事时间,以秒为单位)。如果我可以将每个事件加入到后续事件中,那么我可以通过从第2站的到达时间减去第1站的出发时间来计算每辆公交车在站点之间驾驶的时间。

但是我该如何进行此加入?如何在一定的出发时间后轻松找到最快的到达时间? 编辑我正在使用sql-server 2012。

示例数据

Sample Data

预期结果

Expected Result After Join

1 个答案:

答案 0 :(得分:1)

使用lead函数,该函数根据指定的顺序获取后续行的值。

select t.*, 
lead(arrival_time) over(partition by busname order by arrival_time) as next_stop_arrival,
lead(departure_time) over(partition by busname order by arrival_time) as next_stop_departure
from tablename t