Объединение / объединение двух ключей в один ключ и удаление дубликатов - PullRequest
0 голосов
/ 05 июня 2019

Я хочу объединить две таблицы, используя SQL (Toad for Oracle), объединяющий один ключ из одной таблицы с двумя ключами основной таблицы при удалении дублированных записей. Я полагаю, что иллюстрация поможет вам лучше понять мою проблему:

Dataframe A:

    Key1 Key2 ColA 
    1     2    1993
    1     2    1992
    1     4    1991
    2     4    1990
    2     5    1989 
    2     5    1988
    3     5    1987
    3     6    1986
    3     6    1985

Dataframe B:

Key1&2  ColB
1       Adress1
1       Adress1
1       Adress1
2       Adress2
2       Adress2
3       Adress3
3       Adress3
3       Adress3
4       Adress4
4       Adress4
5       Adress5
6       Adress6
6       Adress6

Желаемый кадр данных:

Key1 Key2 ColA  ColB-1     ColB-2
1     2    1993 Adress1   Adress2
1     2    1992 Adress1   Adress2 
1     4    1991 Adress1   Adress4
2     4    1990 Adress2   Adress4
2     5    1989 Adress2   Adress5
2     5    1988 Adress2   Adress5
3     5    1987 Adress3   Adress5
3     6    1986 Adress3   Adress6
3     6    1985 Adress3   Adress6

До сих пор я пытался использовать следующее утверждение:

SELECT *
FROM A
LEFT JOIN B ON A.key1=B.key1&2
LEFT JOIN B ON A.key2=B.key1&2

Однако, как я объяснил, поскольку в кадре данных дублируются строки в его ключах, дублированные строки в моем выводе также. Надеюсь, что все ясно.

Спасибо

KS

1 Ответ

0 голосов
/ 05 июня 2019

Это то, что вы хотите?

SELECT A.*, B1.ColB, B2.ColB
FROM A LEFT JOIN
     (SELECT DISTINCT key1&2, ColB
      FROM B
     ) B1 ON A.key1 = B1.key1&2 LEFT JOIN
     (SELECT DISTINCT key1&2, ColB
      FROM B
     ) B2 ON A.key2 = B2.key1&2;
...