Heim > Datenbank > MySQL-Tutorial > Wie ersetze ich NULL-Werte durch den vorherigen Nicht-NULL-Wert in SQL?

Wie ersetze ich NULL-Werte durch den vorherigen Nicht-NULL-Wert in SQL?

Barbara Streisand
Freigeben: 2025-01-04 10:42:34
Original
904 Leute haben es durchsucht

How to Replace NULL Values with the Previous Non-NULL Value in SQL?

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage