[英]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.