首先,我确实在SO中看到了与我的问题相关的答案,并从中得到了tblmonths的设计理念。但我堆叠着这个:
基本上,我想将开始日期和结束日期指定为:2015-05-01和2016-01-01。我希望根据月份获得这些日期之间的记录。如果两者之间没有一个月的数据,则应返回0.
到目前为止,我的查询返回正确的数据,但总是持续12个月,即使日期相隔几个月。对于2015-10-01和2016-01-01期间,输出应为:
2015-Oct = 10
2015-Nov = 0
2015-Dec = 5
2016-Jan = 2
SELECT
tblmonths.monthid,
COUNT(servicestatusid) as totalcompleted
FROM tblmonths
left JOIN tblservicestatus ON (tblmonths.monthid=MONTH(tblservicestatus.statusupdatedon)
AND tblservicestatus.statusupdatedon BETWEEN 2015-10-01 AND 2016-01-01)
GROUP BY monthid
我已经移动了:
tblservicestatus.statusupdatedon BETWEEN 2015-10-01 AND 2016-01-01
退出LEFT JOIN但没有变化,并在GROUP BY子句之后将其包含为HAVING。
有人建议我在丘比特领域做这件事,我想出了:
SELECT
COUNT(servicestatusid) as totalcompleted
FROM tblmonths
LEFT JOIN tblservicestatus ON (tblmonths.monthid=MONTH(tblservicestatus.statusupdatedon)
AND CONCAT_WS("-",2015,monthid,1) BETWEEN 2015-10-01 AND 2016-01-01)
GROUP BY monthid
想知道CONCAT_WS是否正在返回字符串,确实尝试了STR_TO_DATE。进行一些更改的唯一变化是更改JOIN但输出错误。
我哪里错了?