Mở rộng theo câu trả lời của KM, bạn cần một bảng ngày giống như một bảng số. Có nhiều ví dụ trên web nhưng đây là một ví dụ đơn giản.
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
Bây giờ bạn có một bảng
thì bạn có thể viết lại truy vấn của mình như sau:
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
Hai lưu ý:Bạn sẽ cần một mệnh đề where để chỉ định phạm vi của mình. Tham gia vào một dàn diễn viên không phải là lý tưởng. Loại trong bảng ngày của bạn phải khớp với loại trong bảng thông thường của bạn.