我有个问题:
SELECT DATE_FORMAT(odd_date_created + INTERVAL -3 DAY, '%Y') AS `year`
, DATE_FORMAT(odd_date_created + INTERVAL -3 DAY, '%b') AS `month`
, COUNT(odd_Id) as total, status, odd_date_created FROM odd_data
WHERE status = 1
GROUP BY DATE_FORMAT(odd_date_created + INTERVAL -3 DAY, '%m')
HAVING DATE_FORMAT(odd_date_created + INTERVAL -3 DAY,'%Y') = 2018
$yeartodate将从“选择”下拉列表中动态显示。当用户选择2017时,会设法获取数据,但如果选择2018,则不会重新运行数据。
有人能帮帮我吗。
1条答案
按热度按时间g0czyy6m1#
问题出在你的
GROUP BY
条款。由于您是按月分组的,每个月的第一个数据是在2017年,因此DATE_FORMAT(odd_date_created + INTERVAL -3 DAY,'%Y')
实际上,select几乎肯定会在2017年推出(尽管由于没有隐含订单,因此无法保证)。你需要GROUP BY
年度,这样你就可以得到每年每个月的数据。然后您可以使用HAVING
. 请注意,您可以在中使用别名GROUP BY
以及HAVING
子句,因此可以将查询重写为:请注意
status
以及odd_date_created
在这个查询中是没有意义的,因为它们将从匹配WHERE
以及HAVING
条款。