我正在尝试按日期对 2 个不同的表进行分组。但是,出现问题,因为我无法按日期分组。
我有 2 个表,第一个是“预算”,第二个是“按地区划分的销售业绩” 想法是显示所有月份(12 个月)的预算 每个月我们都有数据,我们将看到每个特定月份的销售额。
SELECT
BB.RG,
BB.YEAR,
DATE_FORMAT( BB.MONTH, '%M' ) AS `MONTH`,
SPR.Bookings,
SPR.`Bookings PY`,
SPR.Billing,
SPR.`Billing PY`,
SPR.`GP Amt`,
SPR.`GP Amt PY`,
SUM( BB.BUDGET ) AS BUDGET
FROM
BRANCH_BUDGET BB
LEFT JOIN Sales_Performance_Region SPR
ON BB.MONTH = SPR.MONTH
WHERE
BB.RG = 'FE'
AND SPR.RG = 'FE'
AND BB.YEAR = '2018'
GROUP BY
BB.MONTH
上面你可以看到代码。由于我只有 2 个月的数据,所以没有显示 12 个月,而是显示了 1 月和 2 月。
我希望这个问题是有道理的。你能指导我吗?
最佳答案
每当您在 WHERE
语句或 SELECT
语句 you will need to treat everything inside the select statement as an aggregate 内的任何其他聚合函数之后调用 GROUP BY
时,否则您将面临问题:
在您的代码中:
SELECT `BRANCH_BUDGET`.`RG` ,
`BRANCH_BUDGET`.`YEAR` AS `YEAR` ,
`DATE_FORMAT( `BRANCH_BUDGET`.`MONTH` , '%M' ) AS `MONTH` ,
`Sales_Performance_Region`.`Bookings` ,
`Sales_Performance_Region`.`Bookings PY` ,
`Sales_Performance_Region`.`Billing` ,
`Sales_Performance_Region`.`Billing PY` ,
`Sales_Performance_Region`.`GP Amt` ,
`Sales_Performance_Region`.`GP Amt PY` ,
SUM( `BRANCH_BUDGET`.`BUDGET` ) AS `BUDGET`
FROM (
`BRANCH_BUDGET`
LEFT JOIN `Sales_Performance_Region` ON ( `BRANCH_BUDGET`.`MONTH` =
`Sales_Performance_Region`.`MONTH` )
)
WHERE `BRANCH_BUDGET`.`RG` = 'FE'
AND `Sales_Performance_Region`.`RG` = 'FE'
AND `BRANCH_BUDGET`.`YEAR` = '2018'
GROUP BY `BRANCH_BUDGET`.`MONTH`
您仅按 BRANCH_BUDGET.MONTH
分组,但不按任何其他列分组或对任何其他列执行聚合函数(保存 BRANCH_BUDGET.BUDGET
)。因此,您的输出是错误的,因为它只返回两个月。
关于mysql - 错误 GROUP BY Dates MysQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48646595/