Я думаю, что вы хотите использовать f.TIMESTAMP
в качестве ORDER BY
для LEAD()
. Я думаю, что ваш запрос должен выглядеть примерно так:
SELECT
f.EVENT_ACTION ,
(f.TIMESTAMP) AS starttime,
LEAD(f.TIMESTAMP) OVER (ORDER BY f.TIMESTAMP ASC) AS endtime
FROM
dbo.flext f
WHERE
EVENT_ACTION IN (225,226)
ORDER BY MRDF, EVENT_ACTION
Однако, это все равно оставит вас с NULL на время окончания вашей последней 226 записи. Таким образом, вы можете добавить значение по умолчанию для функции LEAD()
для этой ситуации. Синтаксис:
LEAD ( scalar_expression [ ,offset ] , [ default ] )
Используя этот синтаксис, ваш LEAD()
станет:
LEAD(f.TIMESTAMP, 1, GETDATE()) OVER (ORDER BY f.TIMESTAMP ASC) AS endtime
Вы можете заменить GETDATE()
на любое значение по умолчанию, если нет ведущей записи.