Sql 如何在SSIS中从同一个表中的不同级别获取父子记录?
以下是所需的详细信息和输出 该表有3列:Sql 如何在SSIS中从同一个表中的不同级别获取父子记录?,sql,tsql,ssis,Sql,Tsql,Ssis,以下是所需的详细信息和输出 该表有3列: 记录 父记录 活跃的 根据非活动列,输出要求如下所示: e、 g 1 输出 Record Parent_Record Isactive 5 1 1 Record Parent_Record Isactive 5 3 1 e、 G2 输出 Record Parent_Record Isactive 5
Record Parent_Record Isactive
5 1 1
Record Parent_Record Isactive
5 3 1
e、 G2
输出
Record Parent_Record Isactive
5 1 1
Record Parent_Record Isactive
5 3 1
您可以使用递归CTE从叶节点开始构建层次结构,然后返回到更高的活动父节点:
declare @tmp table (Record int, Parent_Record int, Isactive bit)
declare @recordToCheck int = 5
insert into @tmp values
(1, 0, 1)
,(2, 1, 0)
,(3, 1, 0)
,(4, 2, 0)
,(5, 3, 1)
;WITH RESULT (Record, Parent_Record, Isactive, Lev)
AS
(
--anchor
SELECT A.Record,Parent_Record, Isactive, 1 AS LEVEL
FROM @tmp AS A
WHERE A.Record = @recordToCheck
UNION ALL
--outer
SELECT C.Record, C.Parent_Record, C.Isactive, Lev + 1
FROM @tmp AS C
INNER JOIN RESULT AS B
ON C.Record=B.Parent_Record
)
select top 1 @recordToCheck as Record, Record as Parent_Record, Isactive
from RESULT
where Isactive = 1
order by lev desc
示例1的结果:
示例2的结果:
您可能需要一个递归cte来获取父记录。这个问题应该让你开始。