У меня очень простой стол, но я борюсь с CTE:
ID | Parent | Name
---+--------+---------
1 | NULL | Root
2 | 1 | Child1
3 | 2 | Child2
Я бы хотел получить такой результат:
Element | Root
--------+------
Root | Root
Child1 | Root
Child2 | Root
Мой CTE - что-то вроде этого ...
WITH cte AS
(
SELECT a.id, a.parent, a.name, 1 as lvl
FROM table1 a
UNION ALL
-- Perform the recursive join
SELECT a.id, a.parent, a.name, Lvl+1 AS Lvl
FROM table1 a
INNER JOIN cte pa ON cte.parent = a.id
)
SELECT *
FROM cte
Теперь я бы агрегировал (max) и (self) соединение, но это вроде плохо / неправильно.