Iul*_*ian 5 sql join ms-jet-ace
我有2个表AP和INV,其中两个都有[PROJECT]和[Value]列.
我想要一个查询返回这样的东西:
项目| SUM_AP | SUM_INV
我想出了下面的代码,但它返回了错误的结果(总和是错误的).
SELECT AP.[PROJECT],
SUM(AP.Value) AS SUM_AP,
SUM(INV.Value) AS SUM_INV
FROM AP INNER JOIN INV ON (AP.[PROJECT] =INV.[PROJECT])
WHERE AP.[PROJECT] = 'XXXXX'
GROUP BY AP.[PROJECT]
Run Code Online (Sandbox Code Playgroud)
Pru*_*der 14
查询的结果是错误的,因为您尝试汇总的值正在分组,这会导致重复值包含在SUM.
您可以通过几个子选择来解决它:
SELECT
AP1.[PROJECT],
(SELECT SUM(AP2.Value) FROM AP AS AP2 WHERE AP2.PROJECT = AP1.PROJECT) AS SUM_AP,
(SELECT SUM(INV2.Value) FROM INV AS INV2 WHERE INV2.PROJECT = AP1.PROJECT) AS SUM_INV
FROM AP AS AP1
INNER JOIN INV AS INV1
ON (AP1.[PROJECT] =INV1.[PROJECT])
WHERE AP1.[PROJECT] = 'XXXXX'
GROUP BY AP1.[PROJECT]
Run Code Online (Sandbox Code Playgroud)