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
Libérer: 2025-01-03 15:35:38
original
972 Les gens l'ont consulté

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal