LAG und LEAD
Fensterfunktionen, die einen Wert aus der vorherigen (LAG) oder nächsten (LEAD) Zeile lesen, ohne Self-Join.
Syntax
LAG(column [, offset [, default]]) OVER ([PARTITION BY …] ORDER BY …)LEAD(column [, offset [, default]]) OVER ([PARTITION BY …] ORDER BY …)
- offset gibt an, wie viele Zeilen zurück oder vor (Standard: 1). default ersetzt das NULL an den Rändern.
Beispiel
SELECT order_id, order_date, LAG(order_date) OVER (ORDER BY order_id) AS prev_date FROM orders ORDER BY order_id;
Jede Bestellung mit dem Datum der davorliegenden Bestellung; die erste Bestellung hat NULL.
Verwendete Tabellen: orders. Probiere es unten in einer Lektion aus.
Häufige Fehler
- Ohne ORDER BY innerhalb von OVER hängt das Ergebnis von der Zeilenreihenfolge ab und ist nicht verlässlich.
- Füge PARTITION BY hinzu, wenn der Vergleich innerhalb einer Gruppe bleiben soll, etwa bei einem Kunden.