在创建SQL查询时需要帮助。有点困惑所以问问题。情况如下:
我有一张表说EmpInfo:
EmpFirstName, EmpLastName, EmpID, EmpGender, EmpDOB, EmpAddress
表2 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
EmpMasterID样本数据:
EmpID1 | EmpId2 | AbsoluteEmpID
10 | 20 | 10
60 | 70 | 60
现在我必须加入这两个表并获得以下列:
EmpID, EmpFirstName, EmpLastName, AbsoluteEmpID
如果EmpInfo.EmpID = EmpMasterID.EmpID1 OR EmpInfo.EmpID = EmpMasterID.EmpID2
,将从EmpMasterID表中获取AbsoluteEmpID的值
否则,AbsoluteEmpID的值将是EmpID本身。
请帮忙。
感谢。
答案 0 :(得分:1)
这将加入EmpID1
或EmpID2
。如果两者都失败,left join
会确保您获得null
行,然后您只需将null
替换为empid
:
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
答案 1 :(得分:0)
应该基于内部联接
update EmpInfo
INNER JOIN EmpMasterID On (EmpInfo.EmpID = EmpMasterID.EmpID1
OR EmpInfo.EmpID = EmpMasterID.EmpID2)
SET EmpID = AbsoluteEmpID
答案 2 :(得分:0)
为什么你不想要这个?
SELECT ei.EmpID, ei.EmpFirstName, ei.EmpLastName, em.AbsoluteEmpID
FROM EmpMasterID em JOIN
EmpInfo ei
ON ei.EmpID = ei.AbsoluteEmpID;
我不知道OR
与此查询有什么关系。