Разширявайки отговора на KM, имате нужда от таблица с дати, която е като таблица с числа. В мрежата има много примери, но ето един прост.
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
Сега имате таблица
тогава можете да пренапишете вашата заявка, както следва:
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
Две бележки:Ще ви е необходима клауза where, за да посочите диапазона си. Присъединяването към каст не е идеално. Типът във вашата таблица с дати трябва да съвпада с типа във вашата обикновена таблица.