Elic |
Stax. | Dancing-master | Можно ли в иерархическом запросе вывести SYS_CONNECT_BY_PATH в обратном порядке, т.е. от корня к листочка а наоборот |
SQL> select reverse('123') from dual;--побайтно | И что по твоему должно получиться из прямого пути \Станислав\гонит\пургу ? :) |
спасиб
действительно не работает

SQL> select reverse('\Станислав\гонит\пургу') from dual;
REVERSE('\СТАНИСЛАВ\ГО
----------------------
угруп\тиног\валсинатС\
SQL>
влоб
select max(SYS_CONNECT_BY_PATH(rr,';')||';')
from (
SELECT id,x,SUBSTR (s,
INSTR (s, ';', 1, x) + 1,
INSTR (s, ';', 1, x + 1) - INSTR (s, ';', 1, x) - 1
) rr
,decode(x,max(x) over(partition by id),1,0) st
FROM
(SELECT rownum id,SYS_CONNECT_BY_PATH(ename,';')||';' S
FROM emp
START WITH mgr is NULL
CONNECT BY PRIOR empno = mgr) t
,pivot
WHERE x < (LENGTH(s)-LENGTH(REPLACE(s,';')))
order by id,x)
START WITH st=1
CONNECT BY PRIOR x-1 = x
and PRIOR id = id
group by id
SQL> /
MAX(SYS_CONNECT_BY_PATH(RR,';')||';')
-----------------------------------------------
;KING;
;JONES;KING;
;SCOTT;JONES;KING;
;ADAMS;SCOTT;JONES;KING;
;FORD;JONES;KING;
;SMITH;FORD;JONES;KING;
;BLAKE;KING;
;ALLEN;BLAKE;KING;
;WARD;BLAKE;KING;
;MARTIN;BLAKE;KING;
;TURNER;BLAKE;KING;
;JAMES;BLAKE;KING;
;CLARK;KING;
;MILLER;CLARK;KING;
14 rows selected.
......
stax