Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

ALLE Daten anzeigen Daten zwischen zwei Daten; Wenn für ein bestimmtes Datum keine Zeile vorhanden ist, zeigen Sie in allen Spalten Null an

;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

Sie müssen die Daten erfinden, daher habe ich hier einen rekursiven allgemeinen Tabellenausdruck verwendet.SQL Fiddle

MAXRECURSION-Nummer

Gibt die maximal zulässige Anzahl von Rekursionen für diese Abfrage an. Zahl ist eine nicht negative ganze Zahl zwischen 0 und 32767. Wenn 0 angegeben ist, wird kein Limit angewendet. Wenn diese Option nicht angegeben ist, ist das Standardlimit für den Server 100.

Wenn die angegebene oder Standardzahl für das MAXRECURSION-Limit während der Abfrageausführung erreicht wird, wird die Abfrage beendet und ein Fehler zurückgegeben.