Generieren eines vollständigen Datumsbereichs mit fehlenden Werten
Bei der Arbeit mit Datumsdaten ist es häufig erforderlich, alle Daten innerhalb eines bestimmten Bereichs anzuzeigen. auch wenn für einige Daten Datensätze fehlen. Wie erreichen Sie dies in SQL und stellen sicher, dass fehlende Datumsangaben in relevanten Spalten einen Nullwert anzeigen?
Betrachten Sie die folgende Tabelle, @temp, mit Beispieldatumsdaten:
INSERT INTO @temp SELECT '10/2/2012', 1 INSERT INTO @temp SELECT '10/3/2012', 1 INSERT INTO @temp SELECT '10/5/2012', 1 INSERT INTO @temp SELECT '10/7/2012', 2 INSERT INTO @temp SELECT '10/9/2012', 2 INSERT INTO @temp SELECT '10/10/2012', 2 INSERT INTO @temp SELECT '10/13/2012', 2 INSERT INTO @temp SELECT '10/15/2012', 2
Zum Abrufen Für alle Daten zwischen zwei angegebenen Daten können Sie die folgende Abfrage verwenden:
SELECT * FROM @temp WHERE CDate BETWEEN '10/01/2012' AND '10/15/2012'
Diese Abfrage gibt jedoch nur die vorhandenen Datensätze innerhalb dieses Datumsbereichs zurück. Um fehlende Daten mit einem Nullwert einzubeziehen, müssen Sie einen vollständigen Datumsbereich erstellen und ihn mit den vorhandenen Daten verbinden:
;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) AS 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
Die Zahloption MAXRECURSION begrenzt die Anzahl der rekursiven Iterationen und stellt so sicher, dass die Abfrage erfolgreich abgeschlossen wird . Die ISNULL-Funktion ersetzt alle Nullwerte in der Spalte „val“ durch Null.
Mit diesem Ansatz können Sie sicherstellen, dass alle Daten innerhalb des angegebenen Bereichs angezeigt werden, wobei fehlende Werte durch Null dargestellt werden.
Das obige ist der detaillierte Inhalt vonWie erstelle ich einen vollständigen Datumsbereich in SQL, einschließlich fehlender Daten mit Nullwerten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!