我有一个网站的职位表,其中每个条目都有其创建日期。每个日期的项目数,在日期间没有差距
我要回表所示:
Date Posts
16-11-2009 5
17-11-2009 0
18-11-2009 4
etc
但我在努力寻找正确的SQL。我可以轻松获得按日期分组的帖子,但这并不会返回没有帖子的日期(例如17-11-2009错过)。
是否有一些SQL会给我想要的东西?或者我应该使用一些非SQL代码来处理没有帖子的日子?
我有一个网站的职位表,其中每个条目都有其创建日期。每个日期的项目数,在日期间没有差距
我要回表所示:
Date Posts
16-11-2009 5
17-11-2009 0
18-11-2009 4
etc
但我在努力寻找正确的SQL。我可以轻松获得按日期分组的帖子,但这并不会返回没有帖子的日期(例如17-11-2009错过)。
是否有一些SQL会给我想要的东西?或者我应该使用一些非SQL代码来处理没有帖子的日子?
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)
一个简单的窍门是有一个表,你在它需要的所有日期...然后使用一个外连接此表和一个与职位
之间。如果我记得正确乔凯尔科提醒类似的假期计算和铝。