如果特定日期的日期没有值,则返回0

问题描述:

我正在执行查询以返回特定日期的计数记录数。 问题是当我在某一天使用GroupBy时,如果日期没有记录,那么当天的日期将不会显示在输出中。如果特定日期的日期没有值,则返回0

我该如何做到这一点?

我做这样的事情:

SELECT COUNT(History.Id) 
FROM History 
INNER JOIN User ON User.Id = History.UserId 
WHERE (@StartDate = @NullDate OR History.CreatedOnDate >= @StartDate) 
AND (@EndDate = @NullDate OR History.CreatedOnDate <= @EndDate) 
GROUP BY History.CreatedOnDat 

01-08, 3 records 
02-08, 2 records 
04-08, 5 records 

我需要03-08 0的记录。

与每行一个每天做一个临时表:

Declare @StartDate datetime = '2016-08-01' 
Declare @EndDate datetime = '2016-08-31' 

declare @temp table 
(
oneday datetime 
); 

WHILE @StartDate <= @EndDate 
begin 
INSERT INTO @temp VALUES (@StartDate); 
SET @StartDate = Dateadd(Day,1, @StartDate); 
end 

select * from @temp 

然后,只需与该临时表连接查询。