有两个桌子
第一个有预定时间
BusDepartureStation ArrivalStation DepartureTime
A B 10:00
A B 13:00
C D 18:00
C D 22:00
第二表有实际时间
BusDepartureStation ArrivalStation DepartureTime
A B 10:15
A B 13:30
c D 18:10
C D 22:00
最佳答案
select
s.BusDepartureStation, s.BusArrivalStation, s.DepartureTime,
dateadd(
mi,
min(case
when d.DepartureTime >= s.DepartureTime
then datediff(mi, s.DepartureTime, d.DepartureTime), s.DepartureTime)
else null
end),
s.DepartureTime
) as NextNearestDepartureTime
from Scheduled s inner join Departed d
on d.BusDepartureStation = s.BusDepartureStation
and d.ArrivalStation = s.ArrivalStation
group by
s.BusDepartureStation, s.BusArrivalStation, s.DepartureTime
为此,我假设您的出发时间永远不会早,并且较早的预定出发时间总是在随后的巴士之前出发。而且,如果我对SQL Server的假设不正确,您应该能够调整时差逻辑以使用MySQL函数。