Ersetzen Sie NULL-Werte durch den vorherigen bekannten Wert in SQL
In SQL-Datenbanken stößt man häufig auf Tabellen mit fehlenden oder NULL-Werten. In bestimmten Szenarien ist es notwendig, diese NULL-Werte durch den aktuellsten bekannten Wert aus einer vorherigen Zeile zu ersetzen. Dies ist besonders nützlich, wenn Sie mit Zeitreihendaten arbeiten, bei denen fehlende Werte die Datenanalyse stören können.
Beispiel:
Betrachten Sie die folgende Tabelle, die eine Zeitreihe von Zahlen darstellt nach Datum indiziert:
date number ---- ------ 1 3 2 NULL 3 5 4 NULL 5 NULL 6 2
Wir möchten die NULL-Werte in der Zahlenspalte durch den aktuellsten bekannten Wert aus der vorherigen Zeile ersetzen. Beispielsweise sollte Datum 2 mit 3 gefüllt werden, Datum 4 und 5 sollten mit 5 gefüllt werden und so weiter.
Lösung mit SQL Server:
DECLARE @Table TABLE( ID INT, Val INT ) INSERT INTO @Table (ID,Val) SELECT 1, 3 INSERT INTO @Table (ID,Val) SELECT 2, NULL INSERT INTO @Table (ID,Val) SELECT 3, 5 INSERT INTO @Table (ID,Val) SELECT 4, NULL INSERT INTO @Table (ID,Val) SELECT 5, NULL INSERT INTO @Table (ID,Val) SELECT 6, 2 SELECT *, ISNULL(Val, (SELECT TOP 1 Val FROM @Table WHERE ID < t.ID AND Val IS NOT NULL ORDER BY ID DESC)) FROM @Table t
Diese Abfrage verwendet eine Unterabfrage, um den aktuellsten Nicht-NULL-Wert für jede Zeile mit einem NULL-Wert zu finden. Die ISNULL-Funktion ersetzt dann die NULL-Werte durch den ausgewählten Wert. Das Ergebnis ist eine Tabelle, in der die NULL-Werte durch den zuvor bekannten Wert ersetzt werden.
Das obige ist der detaillierte Inhalt vonWie ersetze ich NULL-Werte durch den vorherigen Nicht-NULL-Wert in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!