Thay vào đó chúng ta có thể sử dụng LAG / LEAD không?
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 sẽ chọn CreateDT tiếp theo (tiếp theo được xác định bởi "hàng có cùng mã và CreateDt tạm thời lớn hơn đầu tiên sau CreateDT của hàng hiện tại") so với hàng hiện tại. DATEDIFF nhận chênh lệch tính bằng giây (chọn khung thời gian phù hợp). Nó cần bao bọc trong một truy vấn con (hoặc CTE nếu bạn thích) vì hàm cửa sổ LEAD không thể xuất hiện bên trong MAX
Tất nhiên, nó có thể không đặc biệt hữu ích .. Cũng có thể thêm vào mã:
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