选择2列数据何时匹配的记录

dme*_*gha 2 sql-server

我有两个表,如下所示:

 -----------------------
 |EmpNo|Complaint      |
 -----------------------
 |9091 |Change required|
 |9092 |No change      |
 |9093 |Changes done   |
 -----------------------
Run Code Online (Sandbox Code Playgroud)

上表包含员工编号和他的投诉。

我还有一张表格,其中包含员工的各种详细信息,如下所示。

-------------------------------
|EmpNo|EmailID      |EmpBossNO|
-------------------------------
|9091 |abc@gmail.com|9092     |
|9092 |xyz@gmail.com|9093     |
|9093 |mno@gmail.com|9099     |
-------------------------------
Run Code Online (Sandbox Code Playgroud)

在这里,如果Empno:9091提出任何投诉,那么将会向他发送一封邮件boss,说明该投诉是您的员工提出的,您必须接受它,因此我想得到该EmailID员工的老板,为此我想要一个SQL查询。我尝试了此处显示的查询,但没有用。

select EmpEmailID
from tblComplaint
inner join tblEmpMaster on tblEmpMaster.EmpNo = tblComplaint.EmpPSNo
where tblComplaint.EmpPSNo = tblEmpMaster.EmpBossNo
Run Code Online (Sandbox Code Playgroud)

我要输出类似..如果提出投诉EmpNo:9091,它将返回他老板的EmailID xyz@gmail.com

Tim*_*sen 6

tblComplainttblEmpMaster表之间的联接使您处在正确的轨道上。但是,您需要额外的加入才能tblEmpMaster为每位员工的投诉带来老板的电子邮件。

SELECT
    c.EmpNo,
    c.Complaint,
    COALESCE(e2.EmailID, 'NA') AS boss_email
FROM tblComplaint c
INNER JOIN tblEmpMaster e1
    ON c.EmpNo = e1.empNo
LEFT JOIN tblEmpMaster e2
    ON e1.EmpBossNO = e2.EmpNo;
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

演示版

如果给定的员工没有老板(例如,最高级别的老板),我在上方使用了左自我连接。在这种情况下,我将显示NA老板电子邮件。