根据多个条件加入和分组三个表-SQL

问题描述 投票:0回答:1

我正在尝试根据某些条件将三个单独的表连接起来。以下是表格示例:

表A

+----+------------+----------+---------+
| 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,但是随后我需要显示inv行号的每一行。

例如,输入编号3 /行编号1将具有3个发票编号。所有条目num 3 /行num 1将具有代码300、30%的费率和$ 150的金额,但是我需要明显地看到有3条发票行。

我尝试将表联接,分组并获得总数,但无济于事。感谢您的帮助!

sql ms-access join group-by
1个回答
0
投票

我认为您需要在EntryAum和LineNum上的TableA和Table B之间,然后在Code上的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;

产生您想要的结果:

enter image description here

问候,

© www.soinside.com 2019 - 2024. All rights reserved.