SQL Parent Child - Основная иерархия прародителя - PullRequest
0 голосов
/ 08 мая 2018

У меня есть таблица LIST в следующем формате, в которой в каждой строке указываются родители и дети. Есть несколько уровней детей Текущий: до иерархического порядка

Мне нужно преобразовать эту таблицу и записать в новую таблицу в формате, показанном ниже. Назначение уникального идентификатора каждому Имени, чтобы его можно было отсортировать в иерархическом порядке следующим образом:

После иерархического порядка

Может кто-нибудь направить меня в правильном направлении, как это сделать программно? Заранее спасибо.

1 Ответ

0 голосов
/ 09 мая 2018

Попробуйте этот запрос

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...