SQL: Datumsdifferenz zwischen dem aktuellen Datensatz und dem nächsten Datensatz ermitteln

Aus DBWiki
Wechseln zu: Navigation, Suche

Zurück zur Übersicht



Mittels Unterabfrage oder der Window-Funktion lead lässt sich der nächst höhere Datumswert ermitteln, von dem dann der Datumswert des Datensatzes subtrahiert werden kann.


Es soll z. B. für jeden Mitarbeiter der Abteilung 10 das Datum der nächsten Einstellung (unabhängig von der Abteilung) ermittelt, und die Tagesdifferenz ausgegeben werden.

Lösung für Jet-SL

Hinweis für Access-Anwender
Um die folgenden Abfragen selbst testen zu können, müssen die Tabellen der Übungsdatenbank in der Datenbank vorliegen.

SELECT v.*,
       DateDiff( 'd', eingestellt, naechstes_ed) AS tage
FROM   ( SELECT abt_nr,
                ma_name,
                eingestellt,
                ( SELECT min(eingestellt)
                  FROM   mitarbeiter
                  WHERE  eingestellt > m.eingestellt ) AS naechstes_ed
         FROM   mitarbeiter AS m
         WHERE  abt_nr = 10) AS v

Lösung für PostgreSQL

WITH v AS (
    SELECT abt_nr,
           ma_name,
           eingestellt,
           lead( eingestellt ) OVER ( ORDER BY eingestellt ) AS naechstes_ed
    FROM   mitarbeiter )
SELECT v.*,
       naechstes_ed - eingestellt AS tage
FROM   v
WHERE  abt_nr = 10

Dieser DBFiddle zeigt das Resultat.

abt_nr ma_name eingestellt naechstes_ed tage
10 König 17.11.1981 03.12.1981 16
10 Kühne 19.06.1981 18.09.1981 91
10 Müller 23.01.1982 13.07.1987 1997



Zurück zur Übersicht