gpt4 book ai didi

sql - 动态将supervisor节点更改为null

转载 作者:行者123 更新时间:2023-12-03 00:20:33 25 4
gpt4 key购买 nike

我正在从 SQL Server 数据库中提取员工数据来绘制组织结构图。我的公司有很多部门(我想每个公司都有)。我一次只想拉一个特定的部门。

在我们的数据库中,每个部门负责人还向首席执行官或主席汇报。如何将部门负责人的 reportsToEmpId 列(在运行时)更改为 NULL?如果部门负责人的 parent 不属于该部门。

这是我的 reportsTo 表结构:

empId, name, reportsToEmpId, deptId
100, John, 99, 1
101, Mary, 100, 1
102, Carol, 100, 1
99, Jim, null, 2

因为我只拉取 deptId = 1,而 Jim 不是 dept1。我可以将 JohnreportsToEmpId 列动态更改为 NULL 吗?

select fields I need
from reportsTo r
join employee e on r.empId = e.empId
join groupHightlight h on ...
where deptId=1

我尝试使用tmp表,但似乎太麻烦了。

原始输出:

empId, name, reportsToEmpId, deptId
100, John, 99, 1
101, Mary, 100, 1
102, Carol, 100, 1

这是我的预期输出:(但是,我不想对原始表进行任何更改,因为否则如果我想拉出所有向首席执行官报告的人,那么我就会失去部门之间的“连接”)。

empId, name, reportsToEmpId, deptId
100, John, NULL, 1
101, Mary, 100, 1
102, Carol, 100, 1

最佳答案

您可以在 empIddeptId 上进行左连接。如果接受报告的员工没有相同的 deptId,则 reportsToEmpId 将为 null:

select r.empId, r.name, r2.empId reportsToEmpId, r.deptId
from reportsTo r
left join reportsTo r2
on r2.empId = r.reportsToEmpId and r.deptId = r2.deptId
where r.deptId=1

关于sql - 动态将supervisor节点更改为null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42378251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com