Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich einen umfassenden Datumsbereich mit ausgefüllten Nullwerten für fehlende Daten?

Wie erstelle ich einen umfassenden Datumsbereich mit ausgefüllten Nullwerten für fehlende Daten?

Barbara Streisand
Barbara StreisandOriginal
2024-12-19 03:24:08412Durchsuche

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

Generieren eines umfassenden Datumsbereichs mit ausgefüllten Daten

In einer Datenbank ist es häufig erforderlich, Daten innerhalb eines bestimmten Datumsbereichs abzurufen. Wenn jedoch für bestimmte Daten Daten fehlen, kann es sinnvoll sein, Nullen anzuzeigen, anstatt die Spalten leer zu lassen. Dadurch wird sichergestellt, dass der gesamte Datumsbereich dargestellt wird, was eine umfassendere Ansicht der Daten ermöglicht.

Problem:

Sie haben eine Tabelle mit Datums- und Wertdaten sowie Bedarf um alle Daten innerhalb eines angegebenen Bereichs abzurufen. Wenn für ein bestimmtes Datum keine Zeile vorhanden ist, möchten Sie für alle Spalten Null anzeigen.

Lösung:

Dies kann erreicht werden, indem Sie mithilfe von eine Reihe von Datumsangaben erstellen einen rekursiven gemeinsamen Tabellenausdruck (CTE) und dann einen Left-Join mit der vorhandenen Datentabelle durchführen. Der CTE generiert eine Reihe von Datumsangaben innerhalb des angegebenen Bereichs. Der linke Join gleicht die generierten Daten mit den vorhandenen Zeilen ab und füllt alle fehlenden Werte mithilfe der Funktion ISNULL() mit Nullen auf.

;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)

Die Option MAXRECURSION gibt die maximal zulässige Anzahl rekursiver Iterationen an. Da der Datumsbereich in diesem Fall klein ist (15 Tage), können wir ihn auf 0 setzen, um unbegrenzte Iterationen zu ermöglichen.

Durch Ausführen dieser Abfrage erhalten Sie einen vollständigen Datensatz, der alle Daten innerhalb des angegebenen Zeitraums enthält Reichweite. Alle fehlenden Daten werden mit Nullen aufgefüllt, um eine umfassende Darstellung der Daten zu ermöglichen.

Das obige ist der detaillierte Inhalt vonWie erstelle ich einen umfassenden Datumsbereich mit ausgefüllten Nullwerten für fehlende Daten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn