如果某一天的日期没有值,则返回0

时间:2016-08-30 16:54:22

标签: count

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

我怎样才能做到这一点?

我做了类似的事情:

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

我需要拥有0记录的03-08。

1 个答案:

答案 0 :(得分:1)

创建一个每行一天的临时表:

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

然后,只需将查询与此临时表连接即可。