【问题标题】:Join and Group Three Tables On Multiple Criteria - SQL在多个条件下连接和分组三个表 - SQL
【发布时间】:2020-08-05 15:49:30
【问题描述】:

我正在尝试根据某些标准加入三个单独的表。以下是表格示例:

表 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 连接起来,其中条目 num 和行 num 都匹配,但是我需要显示 inv 行号的每一行。

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

我尝试加入表格、对它们进行分组并获得总计数,但无济于事。感谢您的帮助!

【问题讨论】:

    标签: sql ms-access join group-by


    【解决方案1】:

    我认为您需要在 EntryNum 和 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;
    

    这会产生你想要的结果:

    问候,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2021-03-19
      • 1970-01-01
      相关资源
      最近更新 更多