By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE ADJLIST (ID, PARENT_ID, NAME) AS
SELECT 1, NULL, 'TOP' FROM DUAL UNION ALL
SELECT 2, 1, 'L2' FROM DUAL UNION ALL
SELECT 3, 2, 'L3' FROM DUAL UNION ALL
SELECT 4, 3, 'BOTTOM' FROM DUAL
4 rows affected
SELECT LISTAGG(NAME, ' -> ') WITHIN GROUP(ORDER BY LEVEL) AS PATH
FROM ADJLIST
CONNECT BY PARENT_ID = PRIOR ID
START WITH ID = (SELECT ID FROM ADJLIST WHERE PARENT_ID IS NULL)
PATH |
---|
TOP -> L2 -> L3 -> BOTTOM |