我想使用SQL(Toad for Oracle)合并两个表,将一个表中的一个键合并到主表中的两个键,同时删除重复的条目。我猜插图可以帮助您更好地理解我的问题:
数据框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
数据框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
但是,正如我所解释的,由于数据框B在其键中具有重复的行,因此在我的输出中也具有重复的行。 希望它清除。
谢谢
KS
答案 0 :(得分:0)
这是您想要的吗?
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;