2009-11-23 32 views
2

我有一個網站的職位表,其中每個條目都有其創建日期。每個日期的項目數,在日期間沒有差距

我要回表所示:

Date   Posts 
16-11-2009 5 
17-11-2009 0 
18-11-2009 4 
etc 

但我在努力尋找正確的SQL。我可以輕鬆獲得按日期分組的帖子,但這並不會返回沒有帖子的日期(例如17-11-2009錯過)。

是否有一些SQL會給我想要的東西?或者我應該使用一些非SQL代碼來處理沒有帖子的日子?

回答

3
WITH dates AS 
     (
     SELECT CAST('2009-01-01' AS DATETIME) AS d 
     UNION ALL 
     SELECT DATEADD(day, 1, d) 
     FROM dates 
     WHERE d <= GETDATE() 
     ) 
SELECT d, COUNT(posts.id) 
FROM dates 
LEFT JOIN 
     posts 
ON  posts.date >= d 
     AND posts.date < DATEADD(day, 1, d) 
GROUP BY 
     d 
OPTION (MAXRECURSION 0) 
0

一個簡單的竅門是有一個表,你在它需要的所有日期...然後使用一個外連接此表和一個與職位

之間。如果我記得正確喬凱爾科提醒類似的假期計算和鋁。