Maison >base de données >tutoriel mysql >Comment remplir des valeurs NULL dans une ligne avec la valeur non NULL précédente dans SQL Server ?

Comment remplir des valeurs NULL dans une ligne avec la valeur non NULL précédente dans SQL Server ?

DDD
DDDoriginal
2025-01-03 15:35:381010parcourir

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

Comment remplacer les valeurs NULL dans une ligne par une valeur de la valeur connue précédente

Problème :

Vous devez remplacer les valeurs NULL dans une ligne par la valeur de la dernière valeur connue à la date précédente. Par exemple, si la colonne de date contient les valeurs « 1 », « 2 », « 3 », « 4 » et « 5 » et que la colonne numérique contient les valeurs « 3 », « NULL », « 5 », « NULL ». ," et "NULL", les valeurs NULL doivent être remplacées respectivement par "3", "5" et "5".

Solution (SQL Serveur) :

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

Explication :

  • La fonction ISNULL vérifie si la colonne Val est NULL. Si tel est le cas, il renvoie la valeur de la sous-requête.
  • La sous-requête sélectionne la première valeur non NULL de la table @Table où la colonne ID est inférieure à la colonne ID de la ligne actuelle.
  • La clause ORDER BY ID DESC garantit que la valeur non NULL la plus récente est renvoyée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn