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!