Я пытаюсь выполнить то, что, как я считаю, сложная рекурсия с использованием CTE, - это SQL Server 2008. Я не могу обернуть голову вокруг этого.SQL Server 2008 CTE Recursion
В приведенных ниже примерах вы можете принять фиксированную глубину 3 ... ничто никогда не будет ниже этого. В реальной жизни глубина «глубже», но все же исправлена. В этом примере я попытался упростить его.
Мои входные данные подобны приведенным ниже.
ID PARENT_ID NAME DEPTH
------------------------------------------
1 NULL A 1
2 1 B 2
3 2 C 3
4 1 D 2
Выходной сигнал моего CTE должен быть следующей таблицей.
LEVEL1_ID LEVEL2_ID LEVEL3_ID LEVEL1_NAME LEVEL2_NAME LEVEL3_NAME
--------------------------------------------------------------------------------
1 NULL NULL A NULL NULL
1 2 NULL A B NULL
1 2 3 A B C
1 4 NULL A D NULL
Если я могу получить столбцы идентификаторов на выходе, я могу, конечно, сопоставить имена в таблице поиска.
Я открыт для других способов решения этой задачи, в том числе с использованием SSIS.
Я не мог понять, что логика вы подаете, глядя на свой выход. Я думаю, что последняя строка должна быть '/ B/D', потому что родительский идентификатор' D' равен 2 i.e. 'B' – IsmailS
только что обновил вопрос. Прости. – thomas
Снова то же самое. В строке №4, почему вам нужен Level1_ID как «1», когда его родительский идентификатор равен 2? – IsmailS