Go to http://revealnet.com/pipelines/plsql/archives.htm read 'Using Order By with Connect By' and get hierarchy package. Then do something like this...
Code:Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production JServer Release 8.1.7.4.0 - Production SQL> CREATE OR REPLACE PACKAGE hierarchy 2 IS 3 TYPE branchtabletype IS TABLE OF VARCHAR2 (4000) 4 INDEX BY BINARY_INTEGER; 5 6 branchtable branchtabletype; 7 8 FUNCTION branch ( 9 vlevel IN NUMBER, 10 vvalue IN VARCHAR2, 11 vdelimiter IN VARCHAR2 DEFAULT CHR (0)) 12 RETURN VARCHAR2; 13 14 END hierarchy; 15 / Package created. SQL> SQL> CREATE OR REPLACE PACKAGE BODY hierarchy 2 IS 3 returnvalue VARCHAR2 (4000); 4 5 FUNCTION branch ( 6 vlevel IN NUMBER, 7 vvalue IN VARCHAR2, 8 vdelimiter IN VARCHAR2 DEFAULT CHR (0)) 9 RETURN VARCHAR2 10 IS 11 BEGIN 12 branchtable (vlevel) := vvalue; 13 returnvalue := vvalue; 14 15 FOR i IN REVERSE 1 .. vlevel - 1 LOOP 16 returnvalue := branchtable (i) || vdelimiter || returnvalue; 17 END LOOP; 18 19 RETURN returnvalue; 20 END branch; 21 22 END hierarchy; 23 / Package body created. SQL> SELECT path 2 FROM (SELECT path, LEAD (path) OVER ( 3 ORDER BY ROWNUM) next_path 4 FROM (SELECT ROWNUM row_num, 5 hierarchy.branch ( 6 LEVEL, ename, ', ') path 7 FROM emp 8 START WITH mgr IS NULL 9 CONNECT BY PRIOR empno = mgr)) 10 WHERE next_path NOT LIKE path || '%'; PATH -------------------------------------------------------------------------------- KING, JONES, SCOTT, ADAMS KING, JONES, FORD, SMITH KING, BLAKE, ALLEN KING, BLAKE, WARD KING, BLAKE, MARTIN KING, BLAKE, TURNER KING, BLAKE, JAMES 7 rows selected. SQL>




Reply With Quote