Entwickeln einer Abfrage zum Anzeigen aller Daten und zum Auffüllen fehlender Werte mit Null
Bei der Arbeit mit Datumsbereichen ist es oft notwendig, dies zu berücksichtigen fehlende Datenpunkte. Dieser umfassende Leitfaden bietet eine Lösung für das Problem, alle Daten zwischen zwei bestimmten Daten anzuzeigen und fehlenden Zeilen Nullwerte zuzuweisen.
Um dieses Problem zu beheben, können wir einen allgemeinen Tabellenausdruck (CTE) namens „d“ nutzen. . Dieser CTE generiert eine Reihe von Datumsangaben innerhalb des angegebenen Bereichs. Anschließend können wir eine Linksverknüpfung zwischen dem CTE und der ursprünglichen „temp“-Tabelle durchführen, um das gewünschte Ergebnis zu erhalten.
Hier ist die geänderte Abfrage:
;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) -- use this if your dates are >99 days apart
Diese überarbeitete Abfrage stellt sicher, dass alles fehlt Datumsangaben werden erfasst und die entsprechende Spalte „val“ wird mit Nullen gefüllt. Die Anweisung „OPTION (MAXRECURSION 0)“ wurde hinzugefügt, um Situationen zu behandeln, in denen der Datumsbereich 99 Tage überschreitet.
Das obige ist der detaillierte Inhalt vonWie zeige ich mit SQL alle Daten in einem Bereich an und fülle fehlende Werte mit Null auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!