如果一个表中的值存在于另一个表中,则使用SQL查询打印Y

如果一个表中的值存在于另一个表中,则使用SQL查询打印Y,sql,sql-server,Sql,Sql Server,新年快乐 我使用的是SQL Server,我有三个表。员工、雇员退伍军人和退伍军人分公司: Employee ------------------------ EmployeeId Name ------------------------ 1001 Adams 1002 Jacobs 1003 Peter 1004 Nancy Emp

新年快乐

我使用的是SQL Server,我有三个表。员工、雇员退伍军人和退伍军人分公司:

    Employee
    ------------------------
    EmployeeId     Name
    ------------------------
    1001           Adams
    1002           Jacobs
    1003           Peter
    1004           Nancy

    EmployeeVeteran
    ---------------------------------
    EmployeeVeteranId    EmployeeID  BranchId
    ---------------------------------
    1                    1002        1
    2                    1004        2

    VeteranBranch
    ---------------------------------
    BranchId    BranchName
    ---------------------------------
    1           Air Force
    2           Army
我需要编写SQL查询以获取以下格式的数据:

    ------------------------------------------------
    EmployeeId     Name         IsVeteran     Branch
    ------------------------------------------------
    1001           Adams        N             NULL
    1002           Jacobs       Y             Air Force
    1003           Peter        N             NULL
    1004           Nancy        Y             Army

你能建议我怎么做吗?

你正在寻找一个
左加入。将它们“链接”在一起很重要:

select e.EmployeeId, e.Name,
       (case when ev.EmployeeVeteranId is null then 'N' else 'Y' end) as IsVeteran,
       vb.BranchName
from employee e left join
     employeeveteran ev
     on ev.EmployeeVeteranId = e.EmployeeVeteranId left join
     VeteranBranch vb
     on vb.BranchId = ev.BranchId;

您正在寻找
左联接
。将它们“链接”在一起很重要:

select e.EmployeeId, e.Name,
       (case when ev.EmployeeVeteranId is null then 'N' else 'Y' end) as IsVeteran,
       vb.BranchName
from employee e left join
     employeeveteran ev
     on ev.EmployeeVeteranId = e.EmployeeVeteranId left join
     VeteranBranch vb
     on vb.BranchId = ev.BranchId;

使用Switch Case语句和Left Join如下

SELECT 
    E.EmployeeID,
    E.Name,
    CASE ISNULL(VB.BranchName,'') WHEN '' THEN 'Y' 
    ELSE 'N' END AS IsVeteran,
    VB.BranchName AS Branch
FROM Employee E
LEFT JOIN EmployeeVeteran EV ON E.EmployeeID=EV.EmployeeID
LEFT JOIN VeteranBranch VB ON EV.BranchID=VB.BranchID

使用Switch Case语句和Left Join如下

SELECT 
    E.EmployeeID,
    E.Name,
    CASE ISNULL(VB.BranchName,'') WHEN '' THEN 'Y' 
    ELSE 'N' END AS IsVeteran,
    VB.BranchName AS Branch
FROM Employee E
LEFT JOIN EmployeeVeteran EV ON E.EmployeeID=EV.EmployeeID
LEFT JOIN VeteranBranch VB ON EV.BranchID=VB.BranchID

请尝试使用代码

Select E.EmployeeID,E.Name,Case When EV.VeteranID IS NOT NULL Then 'Y' Else 'N' END AS IsVeteran,VB.BranchName
From Employee E
LEFT JOIN EmployeeVeteran EV
On E.EmployeeID = EV.EmployeeID
LEFT JOIN VeteranBranch VB
On EV.BranchID = VB.BranchID

请尝试使用代码

Select E.EmployeeID,E.Name,Case When EV.VeteranID IS NOT NULL Then 'Y' Else 'N' END AS IsVeteran,VB.BranchName
From Employee E
LEFT JOIN EmployeeVeteran EV
On E.EmployeeID = EV.EmployeeID
LEFT JOIN VeteranBranch VB
On EV.BranchID = VB.BranchID

您使用的是MySQL还是MS SQL Server?(不要标记未涉及的产品。)我删除了不兼容的数据库标记。请仅使用您正在使用的数据库进行标记。请签出LEFT JOIN。您使用的是MySQL还是MS SQL Server?(不要标记未涉及的产品。)我删除了不兼容的数据库标记。请仅使用您正在使用的数据库进行标记。签出LEFT JOIN。