我需要sql查询来合并2个表中的信息

我需要sql查询来合并2个表中的信息,sql,sql-server,Sql,Sql Server,我是SQL新手,需要一点提示。我有两张桌子(员工和部门) 员工表为E: id(int)、姓名(nvarchar)、性别(nvarchar)、部门id(int)、出生日期(datetime) 部门表如D所示: 部门id(内部)、姓名(nvarchar)、位置(nvarchar)、老板id(内部) 这就是我作为输出表所需要的: E.id/E.name/D.name/D.location/(使用简单联接无法获取的最后一项是:)D.boss.name(不是简单的boss id,而是E表中的真实员工姓名)

我是SQL新手,需要一点提示。我有两张桌子(员工和部门)

员工表为E: id(int)、姓名(nvarchar)、性别(nvarchar)、部门id(int)、出生日期(datetime) 部门表如D所示: 部门id(内部)、姓名(nvarchar)、位置(nvarchar)、老板id(内部)

这就是我作为输出表所需要的:

E.id/E.name/D.name/D.location/(使用简单联接无法获取的最后一项是:)D.boss.name(不是简单的boss id,而是E表中的真实员工姓名)


对于高级人才来说,这只是一个简单的问题:——)

再次加入老板的行列。(这是假设
boss\u id
FK's to
Employee


您也可以使用cte编写查询:

WITH CTE AS(
Select 
e.ID,
e.name,
d.boss_id,
d.Location as DepartmentLocation,
d.name as DepartmentName
From Employee e
INNER JOIN Department d on d.boss_id =E.id
)
Select c.id, c.name, e.name as BossName, c.DepartmentLocation, c.DepartmentName

from cte c 
Inner Join Employee e1 on e1.id=c.boss_id

呃…困惑。老板的名字在哪张桌子上?(d.boss.name意味着在“d”模式中有一个名为boss的表中的name列……似乎不正确)我想说的是,boss name在employee表中。Boss_id显示哪个员工是departmend中的老板,而其他员工只是工人这只是转换为左联接,所以为什么不将其写为左联接呢。这样更干净。谢谢,如果我想添加一个案例,检查该员工是否是该部门的老板,并将值更改为null或字符串“boss in”+d.name,该怎么办
SELECT
    E.Id,
    E.Name,
    D.Name,
    D.Location,
    B.Name
FROM Employee E
    INNER JOIN Department D on E.DepartmentID = D.Dep_id
    INNER JOIN Employee B ON D.Boss_id = B.Id
WITH CTE AS(
Select 
e.ID,
e.name,
d.boss_id,
d.Location as DepartmentLocation,
d.name as DepartmentName
From Employee e
INNER JOIN Department d on d.boss_id =E.id
)
Select c.id, c.name, e.name as BossName, c.DepartmentLocation, c.DepartmentName

from cte c 
Inner Join Employee e1 on e1.id=c.boss_id