首页 > 解决方案 > 当列具有两列组合时的内连接

问题描述

我知道标题很烂,我只是不知道还能用什么。

我有 table Employee,看起来像这样:

EmpId    EmpNum   Last
ABC      130      Smith
XVC      210      Johnson
ZAL      105      William
GFL      221      Miller

Employee将加入EmpUpload. 桌子看起来像这样。EmpId_Num 列可以包含 EmpId 或 EmpNum:

EmpId_Num    First
221          Mary
XVC          James
GFL          Alicia

由于 empnum 和 empid 永远不可能相同,因此解决方案是使用两个 ctes,然后union对两个结果执行 a,如下所示:

;with cte as
(
    select First, Last from Employee inner join EmpUpload on
    employee.empnum = empupload.empid_num
),
cte2 as 
(
    select First, Last from Employee inner join EmpUpload on
    employee.empid = empupload.empid_num
)
select first,last from cte union 
select first,last from cte2

有没有更短的方法?

标签: sql-servertsql

解决方案


试试这个,你也可以在 Join 上使用 OR 运算符!

select First, Last 
from Employee 
inner join EmpUpload on employee.empnum = empupload.empid_num
    OR employee.empid = empupload.empid_num

推荐阅读