Можем ли да използваме 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 ще избере следващия CreateDT (следващ дефиниран от "реда, който има същия код и временно първия по-голям CreateDt след CreateDT на текущия ред") спрямо текущия ред. DATEDIFF получава разликата в секунди (изберете подходяща времева рамка). Трябва да се обвие в подзаявка (или CTE, ако предпочитате), тъй като функцията на прозореца LEAD не може да се появи в MAX
Може би не е особено полезно, разбира се.. Може би добавете и кода:
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