报表按照自然年月日分组,但是没有数据的月份需要自动填充零。所以创建虚拟表年月日表
SELECT
@s :=@s + 1 AS _index,
DATE(
DATE_SUB(CURRENT_DATE, INTERVAL @s DAY)
) AS _date
FROM
information_schema. TABLES,
(SELECT @s := - 1) temp
WHERE
@s < 365 #控制天数 查询近一年的数据
ORDER BY
_date
然后在left join 其他业务表数据与 _date 进行条件语句,最后其他表数据进行null值操作
IFNULL(表.字段, 0) AS `业务字段`