Согласно вашему коду,
LEAD(A.CreatedDate,1,0) OVER (ORDER BY A.CreatedDate)
Функция LEAD считывает строку LEAD / Next из текущей строки, но при последней записи функция LEAD не нашла ни одной строки, поэтому она возвращает дату и время по умолчанию. Для этого случая вам нужно сравнить с датой по умолчанию.
case when LEAD(A.CreatedDate,1,0) OVER (ORDER BY A.CreatedDate)='1900-01-01 00:00:00' then A.CreatedDate else LEAD(A.CreatedDate,1,0) OVER (ORDER BY A.CreatedDate) end
Другой способ,
Вместо LEAD (A.CreatedDate, 1,0) используйте LEAD (A.CreatedDate, 1, A.CreatedDate).
Итак, оптимальным решением будет ...
SELECT
ROW_NUMBER() OVER (Order by A.MDetailID) as Row,
DATEDIFF(SECOND, A.CreatedDate, LEAD (A.CreatedDate,1,A.CreatedDate)OVER (ORDER BY A.CreatedDate))Result
FROM dbo.tbl_VehicleLiveMovementDetail A