来自多个表的sql sum数据

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)