LAST_VALUE
Gibt den Wert von column aus der letzten Zeile des Fensterrahmens zurück.
LAST_VALUE(column) OVER ([PARTITION BY ...] [ORDER BY ...] [frame])Parameter
- column
- Spalte oder Ausdruck, dessen Wert zurückgegeben wird
- PARTITION BYoptional
- Spalten, nach denen die Zeilen in Partitionen aufgeteilt werden
- ORDER BYoptional
- Reihenfolge der Zeilen in der Partition, die bestimmt, welche Zeile die letzte ist; ohne sie ist der Rahmen die ganze Partition und die letzte Zeile beliebig
- frameSchlüsselwortoptional
- Fensterrahmen: ROWS oder RANGE BETWEEN start AND end; standardmäßig vom Anfang der Partition bis zur aktuellen Zeile, die ganze Partition ist ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
Rückgabewert
Wert vom Typ von column
Beispiele
Jüngstes Mitglied je Status
SELECT member_name,
status,
birthday,
LAST_VALUE(member_name) OVER (
PARTITION BY status
ORDER BY birthday ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) AS youngest_in_status
FROM FamilyMembers;Standardrahmen endet bei der aktuellen Zeile
SELECT member_name,
status,
birthday,
LAST_VALUE(member_name) OVER (
PARTITION BY status
ORDER BY birthday
) AS last_in_frame
FROM FamilyMembers;Details
Der Standardrahmen endet bei der aktuellen Zeile (und den Zeilen mit demselben Wert in ORDER BY), nicht am Ende der Partition, daher gibt die Funktion ohne eigenen Rahmen oft den Wert der aktuellen Zeile zurück.
Der Rahmen legt fest, welche Zeilen der Partition die Funktion sieht, und wird nach ORDER BY geschrieben: ROWS BETWEEN start AND end zählt Zeilen, während RANGE BETWEEN start AND end die Werte aus ORDER BY verwendet.
Ohne Rahmen gilt die Standardregel. Hat OVER ein ORDER BY, reicht der Rahmen vom Anfang der Partition bis zur aktuellen Zeile, einschließlich der Zeilen mit demselben Wert in ORDER BY. Ohne ORDER BY ist der Rahmen die ganze Partition.