Die Fensterfunktion Last_Value(… Ignore Nulls)
– mit ignore nulls
in den Klammern – ist nicht Standard-SQL.inside the parentheses is not standard SQL. Sie evaluiert den Ausdruck in den Klammern für die durch die Over
-Klausel festgelegten Zeilen in umgekehrter Reihenfolge und liefert den ersten Nicht-Null-Wert.
SELECT LAST_VALUE(<expr> IGNORE NULLS) OVER (ORDER BY …)
FROM …
Ohne explizite Rahmung (between
) wird die Default-Rahmung angewendet:
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
Das bedeutet, dass die Funktion Last_Value()
nicht über zur aktuellen Zeile die gleich platzierten (range…current row
) hinaus sehen kann. Um darüber hinaus zu sehen, muss man den Rahmen explizit öffnen:
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
Entsprechende Standard-SQL Funktion: Last_Value(…) Ignore Nulls
Ignore Nulls
in den Klammern von Last_Value()
ist nicht im internationalen SQL-Standard ISO/IEC 9075-2:2023. In Standard-SQL folgt Ignore Nulls
den Klammern: last_value() ignore nulls
.
20 Jahre SQL-Evolution kann man nicht an einem Tag nachholen. Abonniere den Newsletter via E-Mail, Bluesky oder RSS, um sukzessive aufzuholen und modern-sql.com am Radar zu behalten.
Markus verwandelt veraltetes SQL-92-Wissen in solides und zeitgemäßes SQL-Know-how