Oracle
 sql >> Datenbank >  >> RDS >> Oracle

SQL - Finden Sie fehlende int-Werte in meist geordneten sequentiellen Serien

Ich war dort.

FOR ORACLE:

Ich fand das äußerst nützlich vor einiger Zeit im Netz abgefragt und notiert, aber die Seite fällt mir jetzt nicht mehr ein, Sie können nach "GAP ANALYSIS" suchen bei 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

Hier ist das Ergebnis:

MISSING _TRACK_NO
-----------------
       6

Wenn es mehrere Lücken gäbe, sagen wir 2,6,7,9, dann wäre es:

MISSING _TRACK_NO
-----------------
        2
       6-7
        9