Tôi đã ở đó.
FOR ORACLE:
Tôi thấy điều này cực kỳ hữu ích truy vấn trên mạng một lúc trước và được ghi chú lại, tuy nhiên tôi không nhớ trang web bây giờ, bạn có thể tìm kiếm "GAP ANALYSIS"
trên Google.
SELECT CASE
WHEN ids + 1 = lead_no - 1 THEN TO_CHAR (ids +1)
ELSE TO_CHAR (ids + 1) || '-' || TO_CHAR (lead_no - 1)
END
Missing_track_no
FROM (SELECT ids,
LEAD (ids, 1, NULL)
OVER (ORDER BY ids ASC)
lead_no
FROM YOURTABLE
)
WHERE lead_no != ids + 1
Đây, kết quả là:
MISSING _TRACK_NO
-----------------
6
Nếu có nhiều khoảng trống, giả sử 2,6,7,9 thì nó sẽ là:
MISSING _TRACK_NO
-----------------
2
6-7
9