У меня есть следующая таблица: dbo.split
Name Time
Alex 120
John 80
John 300
Mary 500
Bob 900
А затем еще одна таблица dbo.travel
Name Time
Alex 150
Alex 160
Alex 170
John 90
John 100
John 310
Mary 550
Mary 600
Mary 499
Bob 800
Bob 700
Для каждого значения в разбиении таблицы мне нужно найти следующее значениев таблице путешествий. Я попытался сделать это с помощью CTE a с помощью ROW_NUMBER (), чтобы перейти к следующей группе, но я не могу сгруппировать по правильному значению, поскольку dbo.split может содержать несколько значений для одного и того же имени.
Я ищу следующий вывод:
Name Time TravelTime
Alex 120 150
John 80 90
John 300 310
Mary 500 550
Bob 900 NULL
Вот то, что у меня есть, но это не удается, потому что разделенная таблица может иметь несколько записей на человека:
;with result as (
select t.*,
ROW_NUMBER() OVER (Partition BY t.Name order by t.Time) as rn
from travel t join split s
on t.Name = s.Name and t.TIME>s.Time
)