Oracle
 sql >> Base de données >  >> RDS >> Oracle

SQL - Trouver les valeurs int manquantes dans les séries séquentielles principalement ordonnées

J'y suis allé.

FOR ORACLE:

J'ai trouvé cela extrêmement utile requête sur le net il y a quelque temps et notée, mais je ne me souviens plus du site maintenant, vous pouvez rechercher "GAP ANALYSIS" sur 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

Ici, le résultat est :

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

S'il y avait plusieurs écarts, disons 2, 6, 7, 9, ce serait :

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