左联接SQL Server

时间:2018-07-30 21:54:26

标签: sql sql-server

我有两个表Table ATable B。两者都通过列[Project]链接。

Table A表现为真实的客户数据。 Table B是所有可能值的表(用于验证)。

换句话说,Table A中的一行将有一个项目。但是在Table B中,该特定项目将具有许多不同的品种(“月”,“年”,“任务”,“组织”)

我想要的是将一对一表A与表B连接起来并显示[组织]。

我正在使用的SQL代码是:

select 
    a.[Amount], a.[project], b.[organization] 
from 
    Table_A as a
left join 
    Table_B as b on a.[Project] = b.[Project]

这有效,但不一对一。它将复制表A中的值,以显示每个项目在表B中的所有值。

有办法避免这种情况吗?

欢呼

编辑

表A中的屏幕截图:在此示例中,我正在使用项目'4062'。

enter image description here

表B(完整)的屏幕快照,具有相同的项目-您会看到所有值:

enter image description here

当我进行加入时,这就是我得到的(添加了PayID-在表A中是唯一的以显示重复项):

enter image description here

1 个答案:

答案 0 :(得分:1)

如果您只需要b中的任意一行,则可以使用outer apply

select a.[Amount], a.[project], b.[organization]
from Table_A a outer appy
     (select top (1) b.*
      from Table_B b
      where a.[Project] = b.[Project]
     ) b;