У меня есть таблица с иерархией.
Давайте начнем с Id = 5
; это ребенок ( данный параметр запуска - от пользователя)
Алгоритм:
- дайте мне значение
first
, с которым вы столкнулись для id = 5
- если вы не нашли значение для
id = 5
, перейдите к его родителю и дайте мне его id
- если у этого родителя также нет значения - перейти к его родителю ... и т. Д. (Пока у родителя нет родителя -
parentId = 0
)
p.s. результат здесь должен быть 7.
если значение 7 было пустым, то: 9
конец, если 9 также было пустым, так: 1
Я пытаюсь сделать это с CTE, но безуспешно ..
p.s. Я хочу решение с помощью CTE. :)
![enter image description here](https://i.stack.imgur.com/A5UmZ.png)
То, что я пробовал (даже не смотрите на это - это не работает):
WITH cte AS (
SELECT
id,VALUE,parentid
FROM [test].[dbo].[tmp] WHERE id=5
UNION ALL
SELECT
id,VALUE,parentid
FROM [tmp] WHERE parentId=cte.parentId ) //ERROR : The multi-part identifier "cte.parentId" could not be bound.
SELECT * FROM cte