-1

我需要使用名为“orders”的数据库生成每日销售统计数据,其中一个字段称为“date”(DATETIME)。

我的查询很简单:

SELECT DAY(date) , COUNT(id_order)
FROM z_view_order_list
WHERE WEEK(date) = WEEK(NOW())
GROUP BY DAY(date)
LIMIT 7

问题是,例如,如果昨天没有销售,昨天将不会显示在结果中,但我需要它以 0 值显示。

我的实际结果示例(天/销售):27/3、29/4、30/2 我需要的结果示例(天/销售):27/3、28/0、29/4、30/2、 31/0

提前致谢!

4

1 回答 1

0

创建一个calendar包含所有日期的表格,并在此日历上加入您的表格。

创建该日历表的一种方法:

http://www.richnetapps.com/using-mysql-generate-daily-sales-reports-filled-gaps/

然后

SELECT Day(c.cal_date), COALESCE(COUNT(z.id_order), 0)
FROM calendar c
LEFT JOIN z_view_order_list z ON z.date = c.cal_date
WHERE WEEK(c.cal_date) = WEEK(NOW())
GROUP BY DAY(c.cal_date)
LIMIT 7

每日建议

不要使用日期作为字段的名称。日期是函数的一种,尽量避免混淆...

于 2013-05-31T08:34:11.707 回答