如果特定日期的日期没有值,则返回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
然后,只需与该临时表连接查询。