sql >> Base de Datos >  >> RDS >> Sqlserver

MOSTRAR TODO Datos de fechas entre dos fechas; si no existe una fila para una fecha en particular, muestre cero en todas las columnas

;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

Debe recuperar las fechas, por lo que he usado una expresión de tabla común recursiva aquí. SQL Fiddle

número MAXRECURSION

Especifica el número máximo de recurrencias permitidas para esta consulta. number es un entero no negativo entre 0 y 32767. Cuando se especifica 0, no se aplica ningún límite. Si no se especifica esta opción, el límite predeterminado para el servidor es 100.

Cuando se alcanza el número predeterminado o especificado para el límite MAXRECURSION durante la ejecución de la consulta, la consulta finaliza y se devuelve un error.