2016-08-30 307 views
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的記錄。

回答

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 

然後,只需與該臨時表連接查詢。