En développant la réponse de KM, vous avez besoin d'un tableau de dates qui ressemble à un tableau de nombres. Il existe de nombreux exemples sur le Web, mais en voici un 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
Vous avez maintenant un tableau
alors vous pouvez réécrire votre requête comme suit :
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
Deux remarques :vous aurez besoin d'une clause where pour spécifier votre plage. Une jointure sur un cast n'est pas idéale. Le type de votre table de dates doit correspondre au type de votre table habituelle.