У меня есть следующие данные, и я хочу иметь возможность поместить все строки в одну строку на основе идентификатора типа остановки.Таким образом, тип стопа в порядке, что означает, что 0 или 2 будут предшествовать 3. Я считаю, что Lead - это то, что я хочу использовать, но, похоже, не работает так, как я хочу, и не смог понять, почему.
Вот так выглядят необработанные данные, основанные на времени по Гринвичу.
OrderId GmtDeliveryDateTime StopTypeId
3650 2019-01-11 13:04:44.000 0
3650 2019-01-11 14:22:09.000 3
3650 2019-01-11 15:13:35.000 2
3650 2019-01-11 16:05:14.000 3
И я хочу, чтобы они выглядели так:
OrderId GmtDeliveryDateTime StopTypeId GmtDeliveryDateTime StopTypeId
3650 2019-01-11 13:04:44.000 0 2019-01-11 14:22:09.000 3
3650 2019-01-11 15:13:35.000 2 2019-01-11 16:05:14.000 3
Вот запрос, который я использую:
SELECT *
FROM (
SELECT OrderId,
GmtDeliveryDateTime,
StopTypeId,
LEAD(StopTypeId) OVER (ORDER BY GmtDeliveryDateTime, StopTypeId) NxtStop
FROM table
)
Вот результат, полученный выше:
OrderId GmtDeliveryDateTime StopTypeId NxtStop
3650 2019-01-11 13:04:44.000 0 2
3650 2019-01-11 15:13:35.000 2 2
3650 2019-01-11 14:22:09.000 3 3
3650 2019-01-11 16:05:14.000 3 2
Что не так с моим запросом?