Oracle
 sql >> база данни >  >> RDS >> Oracle

SQL - Намерете липсващи int стойности в предимно подредени последователни серии

Бил съм там.

FOR ORACLE:

Намерих това изключително полезно запитване в мрежата преди време и записано, но сега не си спомням за сайта, може да потърсите "GAP ANALYSIS" в 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

Тук резултатът е:

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

Ако имаше множество пропуски, да речем 2,6,7,9, тогава това би било:

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. Локална временна таблица в Oracle 10 (за обхвата на съхранената процедура)

  2. Какъв е размерът по подразбиране на въвеждане на varchar2 в съхранената процедура на Oracle и може ли да бъде променен?

  3. Запомнена процедура на Oracle:връща както набор от резултати, така и изходни параметри

  4. Как да се обърнем към Получих минус едно от грешка при четене при обаждане при свързване към екземпляр на Amazon RDS Oracle

  5. Как да приложите пакетно извличане с Fluent NHibernate, когато работите с Oracle?