Oracle
 sql >> Baza danych >  >> RDS >> Oracle

SQL — Znajdź brakujące wartości int w przeważnie uporządkowanych szeregach sekwencyjnych

Byłem tam.

FOR ORACLE:

Uważam, że to niezwykle przydatne zapytanie w sieci jakiś czas temu i zanotowane, ale teraz nie pamiętam tej witryny, możesz wyszukać "GAP ANALYSIS" w 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

Tutaj wynik jest następujący:

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

Gdyby było wiele luk, powiedzmy 2,6,7,9, byłoby to:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można znaleźć modułu Pythona cx_Oracle

  2. .NET / Oracle:Jak programowo wykonać skrypt z instrukcjami DDL

  3. Oracle uzyskuje wartość sumy kontrolnej dla porcji danych zdefiniowanej przez klauzulę select

  4. Generowanie liczby losowej w każdym wierszu w zapytaniu Oracle

  5. Obcinanie tabeli w procedurze składowanej