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

Seleccionar cuenta con 0 cuenta

Ampliando la respuesta de KM, necesita una tabla de fechas que sea como una tabla de números. Hay muchos ejemplos en la web, pero aquí hay uno simple.

CREATE TABLE DateList (
 DateValue DATE,
 CONSTRAINT PK_DateList PRIMARY KEY CLUSTERED (DateValue)
 )
 GO
 -- Insert dates from 01/01/2015 and 12/31/2015
 DECLARE @StartDate DATE = '01/01/2015'
 DECLARE @EndDatePlus1 DATE = '01/01/2016'
 DECLARE @CurrentDate DATE = @StartDate

 WHILE @EndDatePlus1 > @CurrentDate
    BEGIN
    INSERT INTO DateList VALUES (@CurrentDate)
    SET @CurrentDate = DATEADD(dd,1,@CurrentDate)
    END

Ahora tienes una mesa

entonces puede reescribir su consulta de la siguiente manera:

SELECT top (5)  DateValue, isnull(Count(id),0) as Counted
FROM DateList 
LEFT OUTER JOIN Table
  on DateValue = CAST(Created AS DATE) 
GROUP BY DateValue
order by DateValue desc

Dos notas:necesitará una cláusula where para especificar su rango. Unirse a un elenco no es lo ideal. El tipo de su tabla de fechas debe coincidir con el tipo de su tabla normal.