1
我正在针对我们的个人客户运行一些针对我们的事件记录数据库的查询。我想要返回的是2012年的所有月份名称以及已发生多少次公开事件的计数。对于一直在我们这里工作了12个月以上的客户,但对于一直在我们这里工作了很短时间的客户来说,这样的工作很好。MySQL填充空日期值
查询我是这样的:
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
它不具有按年限制,即通话记录DB在2011年有此数据,因此可以修改查询以过滤年份范围。
我知道这不是填充,因为数据不存在,我已经看到了创建一个数字\日期表的方法,并引用这个来填充日期,但我正在努力做到这一点。我也改变了周围的联接和条件无济于事。
在此先感谢。
如果我用左加入我得到下面的输出: – Greg
年月总已记录 空空0 2012年8月3 2012年9月356 2012年10月212 2012年11月120 – Greg
是的,这些空值对应于您需要从另一个表中生成或“JOIN”所需的年份和月份。我**不会**给你写你的查询,你将不得不自己处理它。 BTW:您可以使用标准SQL日期函数从日期中获取Year和Month,事实上,您应该在输出中使用生成的Year和Month,因为即使您的现有用户在某些月份可能没有任何活动。和实际日期/年比较好 - 即''和YEAR ='2012''而不是'和YEAR <>'2011'' –