【发布时间】:2018-05-22 22:46:57
【问题描述】:
我对 SQL 很陌生,我正在尝试加入两个表,
表 A:
ID Amount Bank
123 50 Barclays
123 50 tesco
123 50 HSBC
123 100 LLyods
123 200 MBNA
表 B:
ID Amount Bank
123 50 aa
123 50 bb
123 50 cc
123 100 dd
123 200 ee
注意:表 B 中的银行名称与表 A 相同,但格式不同,因此我无法加入。
我正在运行的脚本是:
Select A.*, B.*
FROM TableA A
Left Join TableB B
on A.ID = B.ID AND A.AMOUNT = B.AMOUNT
;
我得到的结果是,
ID Amount Bank ID AMOUNT BANK
123 50 Barclays 123 50 aa
123 50 Barclays 123 50 bb
123 50 Barclays 123 50 cc
123 50 tesco 123 50 aa
123 50 tesco 123 50 bb
123 50 tesco 123 50 cc
123 50 HSBC 123 50 aa
123 50 HSBC 123 50 bb
123 50 HSBC 123 50 cc
123 100 LLyods 123 100 dd
123 200 MBNA 123 200 ee
我想得到的是,
ID Amount Bank ID AMOUNT BANK
123 50 Barclays 123 50 aa
123 50 tesco 123 50 bb
123 50 HSBC 123 50 cc
123 100 LLyods 123 100 dd
123 200 MBNA 123 200 ee
我得到的问题是它将表 A 的每一行连接到满足连接条件的表 B 的行;不幸的是,表 B 没有其他可以用作连接条件的唯一值;
能否请社区看看你能不能想到点什么,我将不胜感激。谢谢你:)
【问题讨论】:
-
teradata 还是 SQL Server?
-
您正在与该联接创建多对多关系。有没有办法将表 A 中的银行列与表 B 中的银行列相关联。也许在表 A 中创建一个列,其中包含表 B 中的这些符号?
-
是的,我就是这么想的,我希望有人遇到过类似的情况并想出一种创造性的方法来解决这个问题:)
-
那么应该有一种方法可以将两个表之间的两个银行列关联起来。表 B 中银行列的字母与表 A 中银行列中的名称有什么关系?
-
您必须有一些标准来确定表 A 中的巴克莱银行与表 B 中的银行 aa 等效。您的问题中缺少这一点。
标签: python sql sql-server join teradata