Объедините и сгруппируйте три таблицы по нескольким критериям - SQL - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь объединить три отдельные таблицы на основе определенных критериев. Вот примеры таблиц:

ТАБЛИЦА 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     |
+----+------------+--------+-----------+

TABLE C

+----+------------+--------+-----------+
| id | rate       | amt    | code      |
+----+------------+--------+-----------+
|  1 |        25% |    $50   | 100     |
|  2 |        50% |    $20   | 370     |
|  3 |        50% |    $25   | 120     |
|  4 |        30% |    $150  | 300     |
+----+------------+----------+---------+

Мне нужно, чтобы финальная таблица выглядела так, но я не знаю, как написать синтаксис:

FINAL TABLE

+----+------------+----------+---------+---------+---------+---------+
| 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 номера счета. Все записи № 3 / строка № 1 будут иметь код 300, 30% -ую ставку и сумму в 150 долл., Но мне нужно наглядно увидеть, что есть 3 строки счета.

Я пытался объединить таблицы, группу их, и получить общее количество, но безрезультатно. Спасибо за вашу помощь!

1 Ответ

1 голос
/ 22 апреля 2020

Я думаю, что вам нужно создать соединения между таблицей A и таблицей B в EntryNum и LineNum, а затем между таблицей B и таблицей C в коде. Ваш 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

С уважением,

...