有两个桌子
第一个有预定时间

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函数。

10-08 17:40