根据多个条件连接并分组三个表-SQL
我正试图根据某些条件连接三个单独的表。以下是表格示例: 表A根据多个条件连接并分组三个表-SQL,sql,ms-access,join,group-by,Sql,Ms Access,Join,Group By,我正试图根据某些条件连接三个单独的表。以下是表格示例: 表A +----+------------+----------+---------+ | id | entry num | line num | inv line| +----+------------+----------+---------+ | 1 | 1 | 1 | 1 | | 2 | 1 | 1 | 2 | | 3 |
+----+------------+----------+---------+
| id | entry num | line num | inv line|
+----+------------+----------+---------+
| 1 | 1 | 1 | 1 |
| 2 | 1 | 1 | 2 |
| 3 | 2 | 1 | 1 |
| 4 | 2 | 2 | 1 |
| 5 | 3 | 1 | 1 |
| 6 | 3 | 1 | 2 |
| 7 | 3 | 1 | 3 |
+----+------------+--------+-----------+
表B
+----+------------+----------+---------+
| id | entry num | line num | code |
+----+------------+----------+---------+
| 1 | 1 | 1 | 100 |
| 2 | 2 | 1 | 370 |
| 3 | 2 | 2 | 120 |
| 4 | 3 | 1 | 300 |
+----+------------+--------+-----------+
表C
+----+------------+--------+-----------+
| id | rate | amt | code |
+----+------------+--------+-----------+
| 1 | 25% | $50 | 100 |
| 2 | 50% | $20 | 370 |
| 3 | 50% | $25 | 120 |
| 4 | 30% | $150 | 300 |
+----+------------+----------+---------+
我需要最终的表如下所示,但我不知道如何编写语法:
最终表格
+----+------------+----------+---------+---------+---------+---------+
| id | entry num | line num | inv line| code | rate | amt |
+----+------------+----------+---------+---------+---------+---------+
| 1 | 1 | 1 | 1 | 100 | 25% | $50 |
| 2 | 1 | 1 | 2 | 100 | 25% | $50 |
| 3 | 2 | 1 | 1 | 370 | 50% | $20 |
| 4 | 2 | 2 | 1 | 120 | 50% | $25 |
| 5 | 3 | 1 | 1 | 300 | 30% | $150 |
| 6 | 3 | 1 | 2 | 300 | 30% | $150 |
| 7 | 3 | 1 | 3 | 300 | 30% | $150 |
+----+------------+----------+---------+---------+---------+---------+
最后,我需要将表A和表B连接起来,其中entry num和line num都匹配,但是接下来我需要显示inv行号的每一行
例如,条目编号3/行编号1将有3个发票编号。所有条目编号3/行编号1将有代码300、30%的费率和150美元的金额,但我需要清楚地看到有3个发票行
我曾尝试连接表,对它们进行分组,并获得总计数,但没有效果。谢谢你的帮助 我认为您需要在EntryNum和LineNum上的TableA和TableB之间创建联接,然后在代码上的TableB和TableC之间创建联接。您的SQL应该如下所示:
SELECT A.ID, A.EntryNum, A.LineNum, A.InvLine, B.Code, C.Rate, C.Amt
FROM TableC AS C INNER JOIN (TableB AS B INNER JOIN TableA AS A ON (B.LineNum = A.LineNum) AND (B.EntryNum = A.EntryNum))
ON C.Code = B.Code;
这将产生您想要的结果:
问候,