Remplacer les valeurs NULL par la valeur connue précédente dans SQL
Dans les bases de données SQL, il est courant de rencontrer des tables avec des valeurs manquantes ou NULL. Dans certains scénarios, il est nécessaire de remplacer ces valeurs NULL par la valeur connue la plus récente d'une ligne précédente. Ceci est particulièrement utile lorsque vous travaillez avec des données de séries chronologiques, où les valeurs manquantes peuvent perturber l'analyse des données.
Exemple :
Considérez le tableau suivant représentant une série chronologique de nombres. indexé par date :
date number ---- ------ 1 3 2 NULL 3 5 4 NULL 5 NULL 6 2
Nous souhaitons remplacer les valeurs NULL dans la colonne numérique par la valeur connue la plus récente de la ligne précédente. Par exemple, la date 2 doit être remplie par 3, les dates 4 et 5 doivent être remplies par 5, et ainsi de suite.
Solution utilisant 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
Cette requête utilise une sous-requête pour rechercher la valeur non NULL la plus récente pour chaque ligne avec une valeur NULL. La fonction ISNULL remplace ensuite les valeurs NULL par la valeur sélectionnée. Le résultat sera un tableau avec les valeurs NULL remplacées par la valeur connue précédente.
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!