我正在进行查询以返回特定日期的计数记录数。 问题是当我在某一天使用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。
答案 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
然后,只需将查询与此临时表连接即可。