Heim > Datenbank > MySQL-Tutorial > Wie fülle ich NULL-Werte in einer Zeile mit dem vorherigen Nicht-NULL-Wert in SQL Server?

Wie fülle ich NULL-Werte in einer Zeile mit dem vorherigen Nicht-NULL-Wert in SQL Server?

DDD
Freigeben: 2025-01-03 15:35:38
Original
972 Leute haben es durchsucht

How to Fill NULL Values in a Row with the Previous Non-NULL Value in SQL Server?

So ersetzen Sie NULL-Werte in einer Zeile durch einen Wert aus dem vorherigen bekannten Wert

Problem:

Sie müssen NULL-Werte in einer Zeile durch den Wert des letzten bekannten Werts vom vorherigen Datum ersetzen. Wenn beispielsweise die Datumsspalte die Werte „1“, „2“, „3“, „4“ und „5“ enthält und die Zahlenspalte die Werte „3“, „NULL“, „5“, „NULL“ enthält ,“ und „NULL“ sollten die NULL-Werte jeweils durch „3“, „5“ und „5“ ersetzt werden.

Lösung (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

Erklärung:

  • Die ISNULL-Funktion prüft, ob die Val-Spalte NULL ist. Wenn dies der Fall ist, wird der Wert aus der Unterabfrage zurückgegeben.
  • Die Unterabfrage wählt den ersten 1 Nicht-NULL-Wert aus der @Table-Tabelle aus, bei dem die ID-Spalte kleiner als die ID-Spalte der aktuellen Zeile ist.
  • Die ORDER BY ID DESC-Klausel stellt sicher, dass der aktuellste Nicht-NULL-Wert zurückgegeben wird.

Das obige ist der detaillierte Inhalt vonWie fülle ich NULL-Werte in einer Zeile mit dem vorherigen Nicht-NULL-Wert in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage