У меня есть таблица ссылок на родителей и детей, на которую я ссылаюсь, и я написал рекурсивный CTE, поэтому у меня теперь есть список отношений между родителями и детьми с их глубиной, то есть в каком поколении они находятся. Теперь можно поворачиваться это, чтобы показать идентификаторы прабабушек и дедушек в левой колонке, потом бабушек и дедушек в следующей колонке, потом родителей, потом детей и т. д. c. с их соответствующими поколениями в качестве заголовков столбцов, пожалуйста?
например, с данными, которые вы видите, я вставляю в свою временную таблицу, могу ли я получить это, пожалуйста?
Gen0 Gen1 Gen2 Gen3 Gen4
1 2 3 4 5
10 20 100 1000
10 20 200
10 30
10 40
create table [#Data] ([ParentId] int, [ChildId] int)
insert [#Data] values
(1, 2)
, (2, 3)
, (3, 4)
, (4, 5 )
, (10, 20)
, (10, 30)
, (10, 40)
, (20, 100)
, (20, 200)
, (200, 1000)
;with [CTE] AS
(
select [A].[ParentId], [A].[ChildId], 1 as [Generation]
from [#Data] [A]
left join [#Data] [B]
on [A].[ParentId] = [B].[ChildId]
where [B].[ChildId] is null
union all
select [D].[ParentId], [D].[ChildId], [Generation] + 1
from [CTE] [C]
join [#Data] [D]
on [C].[ChildId] = [D].[ParentId]
)
select * from [CTE] order by [ParentId], [ChildId]
I Я использую SQL 2017. Большое спасибо за поиск.