SQL父-子-主祖父母层次结构
我有一个名为LIST的表格,格式如下,每一行都标识了父母和孩子。儿童有多个层次 我需要转换此表,并使用下面显示的格式写入新表。为每个名称分配一个唯一的ID,以便可以按如下层次顺序对其进行排序: 有谁能指导我如何以编程方式进行这项工作? 提前感谢您。请尝试此查询SQL父-子-主祖父母层次结构,sql,sql-server,parent-child,hierarchy,Sql,Sql Server,Parent Child,Hierarchy,我有一个名为LIST的表格,格式如下,每一行都标识了父母和孩子。儿童有多个层次 我需要转换此表,并使用下面显示的格式写入新表。为每个名称分配一个唯一的ID,以便可以按如下层次顺序对其进行排序: 有谁能指导我如何以编程方式进行这项工作? 提前感谢您。请尝试此查询 create table hierarchy (Parent varchar(3), child varchar(10)) insert into hierarchy values ('A','AB') ,('A','AC') ,(
create table hierarchy (Parent varchar(3), child varchar(10))
insert into hierarchy values
('A','AB')
,('A','AC')
,('A','AD')
,('A','AE')
,('AB','ABC')
,('AB','ABD')
,('AB','ABE')
,('ABC','ABCD')
,('ABC','ABCE')
GO
; WITH cte_Hierarchy
AS
(
SELECT
ROW_NUMBER() OVER (ORDER BY [name]) Id
, t.[name]
FROM(
SELECT Parent [name] FROM hierarchy t
UNION
SELECT child FROM hierarchy t
)t
)
SELECT t.Id
, t.[name]
, h.Parent
, p.Id ParentId
FROM cte_Hierarchy t
LEFT JOIN hierarchy h ON h.child = t.[name]
LEFT JOIN cte_Hierarchy p on p.[name] = h.Parent