我正在为我们的个人客户对我们的事件日志数据库运行一些查询。我要返回的是 2012 年以来的所有月份名称以及有多少未公开事件的计数。这适用于与我们合作超过 12 个月的客户,但不适用于与我们合作时间较短的客户。
我的查询是这样的:
SELECT DATE_FORMAT(FROM_UNIXTIME(createdtime/1000), '%Y') as 'Year',
DATE_FORMAT(FROM_UNIXTIME(createdtime/1000), '%M') as 'Month',
count(wo.workorderid) as 'Total Logged'
FROM workorder_threaded wot
inner join workorder wo
on wo.workorderid = wot.workorderid
and wo.siteid = 4806
and DATE_FORMAT(FROM_UNIXTIME(createdtime/1000), '%Y') <> '2011'
where wot.workorderid = wot.thd_woid
GROUP BY DATE_FORMAT(FROM_UNIXTIME(createdtime/1000), '%Y%m')
我得到的输出是这样的:
Year Month Total Logged
2012 August 3
2012 September 356
2012 October 212
2012 November 120
但是我需要以下内容:
Year Month Total Logged
2012 January 0
2012 February 0
2012 March 0
2012 April 0
2012 May 0
2012 June 0
2012 July 0
2012 August 3
2012 September 356
2012 October 212
2012 November 120
2012 December 0
它不必受年份限制,即呼叫记录数据库中有 2011 年的数据,因此可以修改查询以过滤年份范围。
我知道这没有填充,因为数据不存在,我已经看到了创建数字\日期表并引用它来填充日期的方法,但我正在努力做到这一点。我也改变了 join 和 where 条件无济于事。
提前致谢。