SQL: Niedrigsten fehlenden Wert einer positiven Zahlenreihe ermitteln

Aus DBWiki
Wechseln zu: Navigation, Suche

Zurück zur Übersicht



Um in einer Zahlenspalte die erste Lücke fortlaufender Werte n oder den nächst höheren Wert zu ermitteln, kann man in einer Unterabfrage jeden Wert der Tabelle um 1 erhöhen und zusätzlich mit dem Wert 1 vereinigen (damit die Abfrage auch bei einer leerer Tabelle funktioniert). Nun legt man zu dieser Unterabfrage einen Left Join auf die ursprüngliche Tabelle an, stellt als Bedingung Is Null für den Wert in der Tabelle ein und lässt sich das Minimum aus der Unterabfrage ausgeben.

Allgemeine Lösung

SELECT MIN( a.n ) AS n
FROM   ( SELECT t.n + 1 AS n
         FROM   t
         UNION
         SELECT 1 
-- statt 'SELECT 1' in Access:
--      SELECT 1
--      FROM dual
-- verwenden. Siehe: https://dbwiki.net/wiki/SQL:_Erstellen_der_Tabelle_dual
--
       ) AS a
       LEFT JOIN t AS b
              ON a.n = b.n
WHERE  b.n IS NULL

Hier ist ein eintsprechender DBFiddle.



Zurück zur Übersicht