Heim >Datenbank >MySQL-Tutorial >Wie fülle ich fehlende Daten mit Nullwerten in SQL-Abfragen?

Wie fülle ich fehlende Daten mit Nullwerten in SQL-Abfragen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-17 11:08:25425Durchsuche

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

Fehlende Daten mit Nullwerten zwischen Datumsbereichen abrufen

Die ursprüngliche Abfrage hat Daten zwischen zwei Daten abgerufen, fehlende Daten jedoch ausgeschlossen. Um fehlende Daten einzubeziehen und den fehlenden Daten einen Nullwert zuzuweisen, können wir eine Technik namens „Datumskennzeichnung“ verwenden.

Kennzeichnung fehlender Daten

Eine rekursive gemeinsame Tabelle Ausdruck (CTE) kann verwendet werden, um eine Reihe von Datumsangaben innerhalb des angegebenen Bereichs zu generieren. Der CTE mit dem Namen d beginnt mit dem ersten Datum des Bereichs und fügt rekursiv einen Tag hinzu, bis er das Enddatum erreicht.

;with d(date) as (
  select cast('10/01/2012' as datetime)
  union all
  select date+1
  from d
  where date < '10/15/2012'
  )

Verknüpfen mit vorhandenen Daten

Als nächstes führen wir einen linken äußeren Join zwischen dem CTE d und der ursprünglichen Datentabelle temp (t) durch, um die vorhandenen Daten für jedes Datum abzurufen. Wenn in temp ein Datum vorhanden ist, wird der Wert verwendet; Andernfalls ersetzen wir Null.

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

Hinweis zu MAXRECURSION

Die Klausel OPTION (MAXRECURSION 0) verhindert, dass die Abfrage aufgrund übermäßiger Rekursion im Datumsbereich fehlschlägt ist zu groß. Sie können den Wert an Ihren spezifischen Datenbereich anpassen.

Mit dieser Technik können wir alle Daten zwischen zwei Daten abrufen, einschließlich fehlender Daten, und gleichzeitig sicherstellen, dass die fehlenden Werte als Null dargestellt werden.

Das obige ist der detaillierte Inhalt vonWie fülle ich fehlende Daten mit Nullwerten in SQL-Abfragen?. 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