如果不存在数据,则检索所有月份的总数,但月份应仅在两个日期之内

时间:2016-10-18 04:47:36

标签: mysql date

首先,我确实在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但输出错误。

我哪里错了?

0 个答案:

没有答案