Wie kann ich der LAG-Funktion mitteilen, den letzten Wert "nicht Null" zu erhalten?LAG-Funktionen und NULLEN
Zum Beispiel, siehe meine Tabelle unten, wo ich ein paar NULL-Werte in Spalte B und C habe. Ich möchte die Nullen mit dem letzten Nicht-Null-Wert füllen. Ich habe versucht, das zu tun, indem Sie die LAG-Funktion, etwa so:
case when B is null then lag (B) over (order by idx) else B end as B,
aber das funktioniert nicht ganz, wenn ich zwei oder mehr Nullen in einer Reihe (den NULL-Wert in der Spalte C Zeile 3 sehen - I würde es als 0,50 wie das Original sein.
Eine Idee, wie kann ich das erreichen? (es hat nicht die LAG-Funktion zu verwenden, andere Ideen sind willkommen)
Einige Annahmen:
- Die Anzahl der Zeilen ist dynamisch;
- Der erste Wert wird immer ungleich null sein;
- Sobald ich eine NULL habe, ist NULL alles bis zum Ende - also möchte ich es mit dem neuesten Wert füllen.
Dank
Itzik Ben-Gan abkürzen schrieb Ein Blog über ein Problem: http://sqlmag.com/sql-server/how-previous-and-next-condition. Leider unterstützt SQL Server nicht die Option 'IGNORE NULLS' in' LAST_VALUE', dann ist es einfach: 'LAST_VALUE (B IGNORE NULLS) OVER (ORDER BY idx)'. – dnoeth