我一直在处理我的一位开发人员提供的查询,该开发人员作为初级 DBA 从事水晶报告工作,即使我忙于其他事情,我也总是喜欢帮助他们,因为这会增加我对 T-sql 的了解。当前的场景很简单,就是进行自联接。下面给出了此方案的架构
create table resource(
res_id int,res_name varchar(20), man_id int)
填充内容并运行下面的查询给出资源名称及其管理器
SELECT a.res_name,b.res_name AS manager FROM dbo.RESOURCE a INNER JOIN dbo.RESOURCE b
ON b.res_id=a.man_id
res_name manager
------------------
sam will
sunny helen
will micah
但是下次我的朋友进入我的隔间时,他需要与上述不同的答案,他需要这样的结果
山姆将弥迦
所以我将如何链接结果我不知道从哪里开始。
您是否要创建这样的视图:
如果你想获得员工层次结构,你应该使用递归 CTE。查看 SqlAuthority 上的这篇文章:SQL SERVER – Introduction to Hierarchical Query using a Recursive CTE。
反之亦然——从高层管理人员开始向下到组织层次结构,就像这里一样。作为指导,如果一个组织的每个经理大约有 8 名员工,那么 5 级管理将足以容纳多达 8^5=32768 名员工,因此您很少需要递归。