Jag har varit där.
FOR ORACLE:
Jag fann det här extremt användbart fråga på nätet för ett tag sedan och noterade, men jag kommer inte ihåg sidan nu, du kan söka efter "GAP ANALYSIS"
på 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
Här är resultatet:
MISSING _TRACK_NO
-----------------
6
Om det fanns flera luckor, säg 2,6,7,9 så skulle det vara:
MISSING _TRACK_NO
-----------------
2
6-7
9