我有两张桌子。表A有5条记录,表B有4条记录。我的SQL看起来像这样:
SELECT
sum(labor), sum(setup), sum(actual)
FROM
TABLE A
LEFT JOIN
TABLE B ON [TABLE A].OP = [TABLE B].OP
表A
op | labor | setup
---+-- --+---
10 | 0.05 | 0
20 | 0.3 | 0.2
30 | 0.05 | 0
40 | 0.0 | 0
50 | 0.0 | 0
表B
op | actual
---+----
10 | 0.05
20 | 3.083
20 | 0.283
20 | 0.3
我需要在一行中完成人工,设置和实际的总和。劳动力= 0.4,设定值= 0.2,实际值= 3.716。我遇到的问题是我得到劳动= 1,设置= 0.6,实际是3.716因为表B有3条记录与操作20。
我也尝试过使用(op分区),但我得到了相同的结果。有人可以请求帮助,我已经盯着查询几个小时并开始失去理智。
感谢
答案 0 :(得分:0)
您需要在join
之前的第二个表格上进行聚合:
SELECT sum(labor), sum(setup), sum(actual)
FROM TABLE A LEFT JOIN
(SELECT OP, SUM(actual) as actual
FROM TABLE B
GROUP BY OP
) b
ON [TABLE A].OP = b.OP;
否则,您的行会在join
之后相乘,并且第一个表上的聚合不起作用。