Ich habe eine Tabelle mit 4 Spalten: Artikel, Jahr, Monat, Menge. Einige der Werte für Amount sind NULL und wenn das passiert, möchte ich diese Werte mit dem vorherigen Betragswert füllen, der nicht null ist. Ich kann das leicht mit der LAG-Funktion machen, wenn es nur einen Nullwert gibt, aber wenn es mehrere hintereinander gibt, bin ich mir nicht sicher, wie ich es angehen soll. Unten ist ein Beispiel dafür, was die Tabelle wie mit einer zusätzlichen Spalte aussehen könnte für das, was ich in meiner Anfrage hinzufügen möchten:Füllen Null-Werte mit letzten Nicht-Null-Betrag - Oracle SQL
Item | Year | Month | Amount | New_Amount
AAA | 2013 | 01 | 100 | 100
AAA | 2013 | 02 | | 100
AAA | 2013 | 03 | 150 | 150
AAA | 2013 | 04 | 125 | 125
AAA | 2013 | 05 | | 125
AAA | 2013 | 06 | | 125
AAA | 2013 | 07 | | 125
AAA | 2013 | 08 | 175 | 175
ich zwei Ideen hatte, die ich nicht, was zu arbeiten scheinen, um zu produzieren I wollen. Zuerst wollte ich LAG verwenden, aber dann bemerkte ich, wenn mehrere NULL-Werte in einer Zeile vorhanden sind, wird dies nicht ausreichen. Als nächstes würde ich FIRST_VALUE verwenden, aber das würde in dieser Situation nicht helfen, wo es eine Null gibt, gefolgt von Werten gefolgt von mehr Nullen. Gibt es eine Möglichkeit, FIRST_VALUE oder eine andere ähnliche Funktion zu verwenden, um den letzten Nicht-Null-Wert abzurufen?
Danke, das hat perfekt funktioniert, der letzte Teil zwischen unbeschränktem Vorangehen und Vorangehen ist etwas, was ich nicht ganz verstehe, würde es dir etwas ausmachen zu erklären, was das ist? – user1723699
@ user1723699 Ich habe meine Antwort aktualisiert. Sie können Oracle-Dokumentation über WINDOWING in analytischen Funktionen lesen. – Multisync
Danke, ich bin kurz mit dem Fenster vertraut, lerne aber immer noch, da ich mich vollkommen autodidaktisch auskenne und keinen starken Programmierhintergrund habe. Das funktionierte wie ein Zauber, aber ich schätze es sehr. – user1723699