Können wir stattdessen LAG/LEAD verwenden?
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 wählt das nächste CreateDT (als nächstes definiert durch "die Reihe, die den gleichen Code und das zeitlich erste größere CreateDt nach dem CreateDT der aktuellen Reihe hat") relativ zu der aktuellen Reihe. DATEDIFF erhält die Differenz in Sekunden (wählen Sie einen geeigneten Zeitrahmen). Es muss in eine Unterabfrage (oder CTE, wenn Sie es vorziehen) verpackt werden, da die Fensterfunktion LEAD nicht innerhalb eines MAX
erscheinen kannEs ist natürlich vielleicht nicht besonders nützlich. Vielleicht fügen Sie auch den Code hinzu:
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