我有一个excel表,其中包含每个节点的ID,NodeType,ParentName和Depth。
我想使用SQL中的深度获取所有NodeType的相应父ID。
有人可以帮忙吗?
样本表:
Id Node Parent Depth
1 a NULL 0
2 b a 1
3 c a 1
4 d b 2
5 e b 2
6 f c 2
7 g c 2
预期结果:获取每个节点的父ID。
Id Node Parent Depth Parent Id
1 a NULL 0
2 b a 1
3 c a 1
4 d b 2
5 e b 2
6 f c 2
7 g c 2
答案 0 :(得分:0)
您可以使用CTE解决问题:
准备环境:
create table AnyTable (
Id int identity(1,1) not null
, [Node] varchar(max) not null
, [Parent] varchar(max) null
, [Depth] int not null
)
insert AnyTable
select 'a', null, 0
union
select 'b', 'a', 1
union
select 'c', 'a', 1
union
select 'd', 'b', 2
union
select 'e', 'b', 2
union
select 'f', 'c', 2
union
select 'g', 'c', 2
CTE查询示例:
;with cteRecursive as (
select Id, [Node], [Parent], [Depth], null [ParentId]
from
AnyTable
where
[Parent] is null
union all
select a.Id, a.[Node], a.[Parent], a.[Depth], c.[Id] [ParentId]
from
AnyTable a
join cteRecursive c
on a.[Parent] = c.[Node]
)
select
*
from
cteRecursive