Maison > base de données > tutoriel mysql > Comment remplir les dates manquantes avec des valeurs nulles dans les requêtes SQL ?

Comment remplir les dates manquantes avec des valeurs nulles dans les requêtes SQL ?

Mary-Kate Olsen
Libérer: 2024-12-17 11:08:25
original
419 Les gens l'ont consulté

How to Fill Missing Dates with Zero Values in SQL Queries?

Récupérer les dates manquantes avec des valeurs nulles entre les plages de dates

La requête d'origine a récupéré les données entre deux dates, mais elle a exclu les dates manquantes. Pour inclure les dates manquantes et attribuer une valeur zéro aux données manquantes, nous pouvons utiliser une technique appelée « marquage de date ».

Marquage des dates manquantes

Un tableau commun récursif L'expression (CTE) peut être utilisée pour générer une série de dates dans la plage spécifiée. Le CTE, nommé d, commence par la première date de la plage et ajoute récursivement un jour jusqu'à ce qu'il atteigne la date de fin.

;with d(date) as (
  select cast('10/01/2012' as datetime)
  union all
  select date+1
  from d
  where date < '10/15/2012'
  )
Copier après la connexion

Joindre avec des données existantes

Ensuite, nous effectuons une jointure externe gauche entre le CTE d et la table de données d'origine temp (t) pour récupérer les données existantes pour chaque date. Si une date existe en temp, la valeur est utilisée ; sinon, nous substituons zéro.

select t.ID, d.date CDate, isnull(t.val, 0) val
from d
left join temp t
       on t.CDate = d.date
order by d.date
OPTION (MAXRECURSION 0) -- use this if your dates are >99 days apart
Copier après la connexion

Remarque sur MAXRECURSION

La clause OPTION (MAXRECURSION 0) empêche l'échec de la requête en raison d'une récursion excessive si la plage de dates est trop grand. Vous pouvez ajuster la valeur en fonction de votre plage de données spécifique.

En utilisant cette technique, nous pouvons récupérer toutes les dates entre deux dates, y compris les dates manquantes, tout en garantissant que les valeurs manquantes sont représentées par zéro.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal