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

Trouver les lacunes d'une séquence en SQL sans créer de tables supplémentaires

Avec SQL moderne , cela peut facilement être fait en utilisant les fonctions de fenêtre :

select invoice_number + 1 as gap_start, 
       next_nr - 1 as gap_end
from (
  select invoice_number, 
         lead(invoice_number) over (order by invoice_number) as next_nr
  from invoices
) nr
where invoice_number + 1 <> next_nr;

SQLFiddle :http://sqlfiddle.com/#!15/1e807/1