LEAD
Gibt den Wert aus der Zeile zurück, die offset Zeilen nach der aktuellen in der Fensterpartition liegt.
PostgreSQL 17.5
LEAD(column[, offset[, default]]) OVER ([PARTITION BY ...] [ORDER BY ...])Parameter
- column
- Spalte oder Ausdruck, dessen Wert aus der nächsten Zeile genommen wird
- offsetintegeroptional
- Wie viele Zeilen nach vorn, standardmäßig 1; ein negativer Wert schaut zurück, wie LAG
- defaultoptional
- Wert vom Typ von column, wenn es keine Zeile mit diesem Versatz gibt, standardmäßig NULL
- PARTITION BYoptional
- Spalten, nach denen die Zeilen in Partitionen aufgeteilt werden; der Versatz geht nicht über die Partition hinaus
- ORDER BYoptional
- Reihenfolge der Zeilen, die bestimmt, welche Zeile die nächste ist
Rückgabewert
Wert vom Typ von column; default oder NULL, wenn es keine Zeile mit diesem Versatz gibt, zum Beispiel bei der letzten Zeile einer Partition
Beispiele
Eine und zwei Zeilen vorwärts
PostgreSQL 17.5
SELECT member_name,
birthday,
LEAD(member_name) OVER (
ORDER BY birthday
) AS next_member,
LEAD(member_name, 2, 'none') OVER (
ORDER BY birthday
) AS two_rows_ahead
FROM FamilyMembers;Zeit bis zum nächsten Kauf
PostgreSQL 17.5
SELECT family_member,
date,
LEAD(date) OVER (
PARTITION BY family_member
ORDER BY date
) AS next_date,
LEAD(date) OVER (
PARTITION BY family_member
ORDER BY date
) - date AS until_next
FROM Payments
ORDER BY family_member,
date;Details
Die Differenz zur nächsten Zeile ist LEAD(column) OVER (...) - column: Für die letzte Zeile einer Partition ist sie NULL. default muss denselben Typ wie column haben.