Jeg har været der.
FOR ORACLE:
Jeg fandt dette ekstremt nyttigt forespørgsel på nettet for et stykke tid siden og noteret, men jeg kan ikke huske siden nu, du kan søge 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
Her er resultatet:
MISSING _TRACK_NO
-----------------
6
Hvis der var flere huller, f.eks. 2,6,7,9, ville det være:
MISSING _TRACK_NO
-----------------
2
6-7
9