Sql server 确定叶链的分层查询';细节

Sql server 确定叶链的分层查询';细节,sql-server,tsql,recursion,common-table-expression,hierarchical-data,Sql Server,Tsql,Recursion,Common Table Expression,Hierarchical Data,我提出了一个问题,这个问题让我(最终)陷入困境,因为我在找到解决方案方面失败了:考虑到表1是我的示例数据源,那么导致表2中列出的结果的正确的T-SQL代码是什么 表1: 表2: [HCode_EmpChain]内容应反映与标识为[ManagerID]的每个[EmployeeID]相关联的唯一[HCode]的“/”独立序列。以员工11为例,他/她是12、67和69的经理,因此他们相关的HCode值将是所寻求的“300251/421024”结果 考虑到大量的“真实”记录和未知的层次结构深度,我的常识

我提出了一个问题,这个问题让我(最终)陷入困境,因为我在找到解决方案方面失败了:考虑到表1是我的示例数据源,那么导致表2中列出的结果的正确的T-SQL代码是什么

表1:

表2:

[HCode_EmpChain]内容应反映与标识为[ManagerID]的每个[EmployeeID]相关联的唯一[HCode]的“/”独立序列。以员工11为例,他/她是12、67和69的经理,因此他们相关的HCode值将是所寻求的“300251/421024”结果

考虑到大量的“真实”记录和未知的层次结构深度,我的常识使我选择了动态递归CTE作为正确的方法,但没有成功

多谢各位

编辑->我能想到的最好结果:

不管它值多少钱,这条链条通常都会走另一条路。也就是说,您通常会将返回最终祖先的路径存储在从属记录上。使用示例数据,EmployeeID 68将/722920/300251/559217/存储在表示血统的列中。然后,如果您想查询表中的“在EmployeeID 11的报告链中为我提供员工”,您可以执行基于字符串的查询,如(为了简化示例,我对其进行了硬编码):

或者,如果对该列使用hierarchyid数据类型

select child.*
from dbo.Employee as child
join dbo.Employee as parent
   on child.HCode_EmpChainIsAncestor(parent.HCode_EmpChain) = 1
where parent.EmployeeID = 11;

请确保问题是独立的,任何小提琴都只是重复问题中已有的信息。根据问题指南,请展示您的尝试,并告诉我们您(在本网站或其他地方)发现了什么,以及为什么它不能满足您的需求。
select child.*
from dbo.Employee as child
join dbo.Employee as parent
   on child.HCode_EmpChainIsAncestor(parent.HCode_EmpChain) = 1
where parent.EmployeeID = 11;