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