Maison >base de données >tutoriel mysql >Comment générer une plage de dates complète avec des valeurs zéro renseignées pour les données manquantes ?

Comment générer une plage de dates complète avec des valeurs zéro renseignées pour les données manquantes ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-19 03:24:08447parcourir

How to Generate a Comprehensive Date Range with Populated Zero Values for Missing Data?

Génération d'une plage de dates complète avec des données renseignées

Dans une base de données, il est souvent nécessaire de récupérer des données dans une plage de dates spécifique. Toutefois, lorsque des données sont manquantes pour certaines dates, il peut être utile d'afficher des zéros au lieu de laisser les colonnes vides. Cela garantit que toute la plage de dates est représentée, offrant une vue plus complète des données.

Problème :

Vous disposez d'un tableau contenant des données de date et de valeur et vous avez besoin pour récupérer toutes les dates dans une plage spécifiée. S'il n'y a pas de ligne pour une date particulière, vous souhaitez afficher zéro pour toutes les colonnes.

Solution :

Ceci peut être réalisé en créant un ensemble de dates en utilisant une expression de table commune récursive (CTE), puis en effectuant une jointure gauche avec la table de données existante. Le CTE génère une série de dates dans la plage spécifiée. La jointure de gauche fait correspondre les dates générées avec les lignes existantes, en remplissant toutes les valeurs manquantes avec des zéros à l'aide de la fonction ISNULL().

;with d(date) as (
  select cast('10/01/2012' as datetime)
  union all
  select date+1
  from d
  where date < '10/15/2012'
  )
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)

L'option MAXRECURSION spécifie le nombre maximum d'itérations récursives autorisées. Dans ce cas, comme la plage de dates est petite (15 jours), nous pouvons la définir sur 0 pour permettre des itérations illimitées.

En exécutant cette requête, vous obtiendrez un ensemble de données complet qui inclut toutes les dates comprises dans la période spécifiée. gamme. Toutes les dates manquantes seront remplies de zéros, fournissant une représentation complète des données.

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