我对SQL不太熟悉,我正在尝试连接两个表
表A:
ID Amount Bank
123 50 Barclays
123 50 tesco
123 50 HSBC
123 100 LLyods
123 200 MBNA
表B:
^{pr2}$请注意:在表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没有其他唯一的值可以用作连接条件
能不能请社会各界看看你能不能想点什么,我会非常感激的。谢谢:)
要直接获得所需的输出,可以执行以下操作:
但是如果您有数百个映射,这是一个丑陋的解决方案。它还假设(Bank,ID,Amount)是这两个表的PK。最好的方法是有一个链接/映射表,如上面建议的MorbidGnome,并将其包含在连接中。在
如果您没有从TableB中提取任何数据(如您的示例中所示),那么您可以使用CASE语句而不是连接到TableB:
^{pr2}$您可以使用内部联接来获得所需的结果
您是否可以创建第三个表,将表a的银行值与其对应的表B的银行值相匹配?因为没有某种类型的链接表指定关系,SQL server无法知道“Barclays”=“aa”、“tesco”=“bb”等等。必须存在某种独特的关系,而在提供的两个表中没有这种关系。在
链接表:
然后可以执行以下操作:
^{pr2}$相关问题 更多 >
编程相关推荐