Сводка
В базе данных Azure (с использованием SQL Server Management Studio 17, т. Е. T-SQL) я пытаюсь объединить несколько родительско-дочерних отношений различной длины.
Базовая таблица
Моя таблица имеет такую форму:
ID parent
1 2
2 NULL
3 2
4 3
5 NULL
Не стесняйтесь использовать этот код для генерации и заполнения:
DECLARE @t TABLE (
ID int,
parent int
)
INSERT @t VALUES
( 1, 2 ),
( 2, NULL ),
( 3, 2 ),
( 4, 3 ),
( 5, NULL )
Проблема
Как получить таблицу с конкатенацией путей, как показано в следующей таблице?
ID path parentcount
1 2->1 1
2 2 0
3 2->3 1
4 2->3->4 2
5 5 0
Сведения
В реальной таблице гораздо больше строк, а самый длинный путь должен содержать ~ 15 идентификаторов.Поэтому было бы идеально найти динамическое решение с точки зрения определения количества родителей.Кроме того: мне не обязательно нужен столбец «parentcount», поэтому не стесняйтесь пропустить это в ответах.
select @@version:
Microsoft SQL Azure (RTM) - 12.0.2000.8