sql >> Database teknologi >  >> RDS >> Sqlserver

VIS ALLE Datoer data mellem to datoer; hvis der ikke findes en række for en bestemt dato, så vis nul i alle kolonner

;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

Du skal finde på datoerne, så jeg har brugt et rekursivt almindeligt tabeludtryk her.SQL Fiddle

MAXRECURSION nummer

Angiver det maksimale antal tilladte rekursioner for denne forespørgsel. tal er et ikke-negativt heltal mellem 0 og 32767. Når 0 er angivet, anvendes der ingen grænse. Hvis denne indstilling ikke er angivet, er standardgrænsen for serveren 100.

Når det angivne eller standardnummer for MAXRECURSION-grænsen nås under udførelse af forespørgsel, afsluttes forespørgslen, og der returneres en fejl.



  1. Sådan fungerer Setseed() i PostgreSQL

  2. Sådan finder du et listeelement på en specificeret position i SQL Server

  3. Fuldtekstsøgning siden PostgreSQL 8.3

  4. Hvordan får man databaseoprettelsestid i PostgreSQL 9.0?