Kan vi använda LAG/LEAD istället?
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 kommer att välja nästa CreateDT (nästa definierad av "raden som har samma kod och den temporärt första större CreateDt efter den nuvarande radens CreateDT") i förhållande till den aktuella raden. DATEDIFF får skillnaden i sekunder (välj en lämplig tidsram). Det måste slås ihop i en underfråga (eller CTE om du föredrar det) eftersom fönsterfunktionen LEAD inte kan visas i en MAX
Det kanske inte är särskilt användbart, förstås.. Lägg kanske till koden också:
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