包括基于 SQL 查询的分组日期范围的零计数

Include zero counts for grouping date ranged based SQL query

我正在尝试对具有 created_at 列和 id 列的单个 'sales' table 中每天的销售额进行分组和排序.每条记录都可以在一天中的任何时间创建。我已经设法通过以下查询做到这一点:

SELECT date_trunc('day', created_at::date) AS period, COUNT(id)
FROM sales
GROUP BY period
ORDER BY period

但是,没有显示销售额为 0 的日子。有任何想法吗? 我找到的大多数答案都使用 LEFT JOIN 但我似乎无法让它工作,所以我似乎误解了如何使用它。 :(

提前致谢!

创建一个 table 的临时 returns 所需日期,然后加入它

DECLARE @StartDateTime DATETIME
DECLARE @EndDateTime DATETIME

SET @StartDateTime = '2015-01-01'
SET @EndDateTime = '2015-01-12';

WITH DateRange(DateData) AS 
(
    SELECT @StartDateTime as Date
    UNION ALL
    SELECT DATEADD(d,1,DateData)
    FROM DateRange 
    WHERE DateData < @EndDateTime
)

SELECT DateRange.DateData, Count(sales.id)
  FROM sales
  right join DateRange on sales.date = DateRange.DateData
  group by DateRange.DateData

OPTION (MAXRECURSION 0)