我有一个网站帖子表,每个条目都有自己的创建日期。
我想返回一个表格,如:
Date Posts
16-11-2009 5
17-11-2009 0
18-11-2009 4
etc
但我很难找到合适的SQL。我可以轻松获得按日期分组的帖子数量,但这并不会返回没有帖子的日期(例如,它错过了17-11-2009)。
是否有一些SQL会给我我想要的东西?或者我应该使用一些非SQL代码来处理没有帖子的日子?
答案 0 :(得分: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)
答案 1 :(得分:0)
一个简单的诀窍就是让一张表中包含你需要的所有日期......然后在这个表和带有帖子的表之间使用外连接
如果我记得它,那么joe celko会为假期计算和al。
提供类似的建议