sql >> Database >  >> RDS >> Oracle

SQL - Vind ontbrekende int-waarden in meestal geordende opeenvolgende reeksen

Ik ben er geweest.

FOR ORACLE:

Ik vond dit extreem handig een tijdje geleden op internet gezocht en genoteerd, maar ik herinner me de site nu niet meer, je kunt zoeken naar "GAP ANALYSIS" op 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 is het resultaat:

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

Als er meerdere hiaten waren, zeg 2,6,7,9, dan zou het zijn:

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


  1. Bulktoestemming inschakelen in SQL Server

  2. Taakwachtrij als SQL-tabel met meerdere consumenten (PostgreSQL)

  3. MariaDB-prestaties bewaken in een hybride cloud

  4. Hoe kan ik de querycache van SQL Server wissen?