繁体   English   中英

SQL 查询获取 MS Access 中具有多个条件 SUM() 的两个表之间的连接

[英]SQL Query for get a join between two tables with a multiple condional SUM() in MS Access

可以在 MS ACCESS 2016 中加入另一个表的多条件 SUM 表吗?

例子:

表 1 - 列

ID、姓名、总数

表 2 - 列

ID、名称、IDREF、ROOTID、CUSTO

数据:

表格1

ID | Name  | Total
---+-------+------
35 |  Test |  "SUM(CUSTO) of ALL ELEMENTS OF TABLE 2 WHERE table2.IDREF = table1.ID **or** table2.ROOTID = table1.ID"

表 2

ID | Name  | IDREF | CUSTO | ROOTID   |
---+-------+-------+-------+----------+
1  | Test  |  35   |   50  |   0      |
2  | Test  |  35   |   30  |   0      |
3  | ALFA  |  12   |   30  |   0      |
4  | BETA  |  17   |   10  |   35     |

结果应该是:

表格1

ID | Name | Total
---+------+------
35 | Test |  90  (50 + 30 from table 2 where idref = 35 and + 10 from table 2 where rootid = 35)

它与我之前的问题之一非常相似,但我认为在 ms-access 中很难做到多条件总和需要一些帮助。

谢谢。

您可以使用几个子查询来获取每个查询的总数,然后将它们加在一起:

SELECT T1.ID, 
NZ((SELECT SUM(T2.Custo) FROM Table2 AS T2 WHERE T1.ID=T2.IDRef),0) +
NZ((SELECT SUM(T2A.Custo) FROM Table2 AS T2A WHERE T1.ID=T2A.RootID) ,0) AS Total
FROM Table1 AS T1;

问候,

您可以使用具有多个 ON 条件的内部联接,如下所示,

SELECT 
    t1.ID,
    t1.Name,
    SUM(t2.CUSTID) AS Total
FROM 
    t2 
    INNER JOIN 
    t1 
ON 
    t2.IDREF = t1.ID
    OR
    t2.ROOTID =t1.ID
GROUP BY
    t1.ID,
    t1.NAME

Output:

ID  Name    Total
35  Test    90

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM