Czy możemy zamiast tego użyć LAG/LEAD?
SELECT MAX(diff_sec) FROM
(
SELECT
DATEDIFF(
SECOND,
CreateDT,
LEAD(CreateDT) OVER(PARTITION BY CODE ORDER BY CreateDT) --next row's createdt
) as diff_sec
FROM Occs
)x
LEAD wybierze następny CreateDT (następny zdefiniowany przez „wiersz, który ma ten sam kod i tymczasowo pierwszy większy CreateDt po CreateDT bieżącego wiersza”) względem bieżącego wiersza. DATEDIFF pobiera różnicę w sekundach (wybierz odpowiedni przedział czasowy). Wymaga zamknięcia w podzapytaniu (lub CTE, jeśli wolisz), ponieważ funkcja okna LEAD nie może pojawić się wewnątrz MAX
Może to oczywiście nie jest szczególnie przydatne. Być może dodaj też kod:
SELECT x.code, MAX(x.diff_sec) FROM
(
SELECT
code,
DATEDIFF(
SECOND,
CreateDT,
LEAD(CreateDT) OVER(PARTITION BY CODE ORDER BY CreateDT) --next row's createdt
) as diff_sec
FROM Occs
)x
GROUP BY x.code