使用 OR 子句的 SQL 连接查询

P_A*_*_Ar 4 sql sql-server join

在创建 SQL 查询时需要帮助。有点困惑所以问问题。情况如下:

我有一张表 EmpInfo: EmpFirstName, EmpLastName, EmpID, EmpGender, EmpDOB, EmpAddress Table2 EmpMasterID: EmpID1, EmpId2, AbsoluteEmpID

EmpInfo 包含示例数据:

EmpFirstName | EmpLastName | EmpID | EmpGender | EmpDOB  | EmpAddress
First1       | Last1       | 10    |  M        | 1/1/92  | Addr1
First2       | Last2       | 20    |  F        | 1/12/92 | Addr2
First3       | Last3       | 30    |  F        | 1/12/94 | Addr3
First4       | Last4       | 40    |  M        | 1/2/94  | Addr4
First5       | Last5       | 60    |  M        | 1/1/91  | Addr5
First6       | Last6       | 70    |  F        | 1/12/92 | Addr6
First7       | Last7       | 80    |  F        | 1/12/95 | Addr7
First8       | Last8       | 90    |  M        | 1/2/97  | Addr8
Run Code Online (Sandbox Code Playgroud)

EmpMasterID 样本数据:

EmpID1 | EmpId2 | AbsoluteEmpID
10     |  20    |  10
60     |  70    |  60
Run Code Online (Sandbox Code Playgroud)

现在我必须连接这两个表并获取以下列:

EmpID, EmpFirstName, EmpLastName, AbsoluteEmpID

如果出现以下情况,AbsoluteEmpID 的值将从 EmpMasterID 表中获取,EmpInfo.EmpID = EmpMasterID.EmpID1 OR EmpInfo.EmpID = EmpMasterID.EmpID2 否则 AbsoluteEmpID 的值将为 EmpID 本身。

请帮忙。

谢谢。

Gio*_*uri 5

这将加入 onEmpID1或 on EmpID2。如果两者都失败,left join请确保您获得一行null,然后只需替换nullempid

select ei.EmpID, 
       ei.EmpFirstName, 
       ei.EmpLastName, 
       isnull(em.AbsoluteEmpID, ei.EmpID) as AbsoluteEmpID
from EmpInfo ei
left join EmpMasterID em on ei.empid = em.EmpID1 or ei.empid = em.EmpID2
Run Code Online (Sandbox Code Playgroud)