【发布时间】:2017-02-02 19:51:13
【问题描述】:
我有以下查询
SELECT YEAR(T.date), MONTH(T.date), T.production, T.lineID, SUM(rework + scrap)
FROM
(SELECT MAX(positionID), date, production, lineID
FROM productionPerPosition
WHERE lineID = 2
AND date BETWEEN '2017-01-01' AND '2017-01-31'
GROUP BY date) AS T
INNER JOIN linePosition lp ON lp.lineID = T.lineID
INNER JOIN fttErrorType fet ON fet.positionID = lp.positionID
INNER JOIN fttData fd ON fd.errorID = fet.errorID
AND fd.date = T.date
GROUP BY YEAR(T.date), MONTH(T.date)
给出这个结果
现在,我想按年份和月份对这些结果进行分组,以获得生产总和和最后一列的总和。我试过这个查询
SELECT YEAR(T.date), MONTH(T.date), SUM(T.production), T.lineID, SUM(rework + scrap)
FROM
(SELECT MAX(positionID), date, production, lineID
FROM productionPerPosition
WHERE lineID = 2
AND date BETWEEN '2017-01-01' AND '2017-01-31'
GROUP BY date) AS T
INNER JOIN linePosition lp ON lp.lineID = T.lineID
INNER JOIN fttErrorType fet ON fet.positionID = lp.positionID
INNER JOIN fttData fd ON fd.errorID = fet.errorID
AND fd.date = T.date
GROUP BY YEAR(T.date), MONTH(T.date)
这给了我
这里的生产总和是错误的!似乎忽略了第一个查询中第 7 行的 GROUP BY。
知道如何获得所需的结果吗?
编辑:在内部 SELECT 中,我对几个不同的位置 (positionID) 有单独的生产,但我只使用来自具有最高 positionID 的位置的生产
【问题讨论】:
-
好吧,您使用的是非标准的 group by 查询(旧版本的 mysql 允许)。这有时会产生奇怪的结果
-
标准的分组方式是什么?
标签: mysql