database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40457 게시물 읽기
No. 40457
계층형 쿼리 표현
작성자
초보초보
작성일
2014-05-15 22:50
조회수
7,169
   A컬럼       B컬럼   C컬럼  메뉴ID  부모메뉴ID    메뉴명
   01              T           0100    T0000                          T첫번째
   01              T          2100     T1000                          T두번째
   01              L          2100     L212I                            L첫번째
   01              L          2100     L212N    L212I           L두번째 
   02              T         3100     T3000                            020202
   02              T         4100     T4000                           030303
   02              L         3100     L3131                           02엘이다
   02              L         3100      L313N    L3131         02엘엘이다
   02              L         3100     L31NN    L313N         02엘엘엘이다
   
   이렇게 들어있는 데이타를  
   
   T두번째>L첫번째>L두번째
   020202>02엘이다>02엘엘이다>02엘엘엘이다   
   
   이런 경로로 표현을 하고 싶습니다. 
   
 고수님들의 답변 부탁드립니다.
 
감사합니다.
이 글에 대한 댓글이 총 2건 있습니다.

http://frombtod.tistory.com/2

참조 해보세요..

서홍주(bigshj)님이 2014-05-16 15:38에 작성한 댓글입니다.

WITH t AS
(
SELECT '01' a, 'T' b, '0100' c, 'T0000' id, '' pid, 'T첫번째' nm FROM dual
UNION ALL SELECT '01', 'T', '2100', 'T1000', ''     , 'T두번째' FROM dual
UNION ALL SELECT '01', 'L', '2100', 'L212I', ''     , 'L첫번째' FROM dual
UNION ALL SELECT '01', 'L', '2100', 'L212N', 'L212I', 'L두번째' FROM dual
UNION ALL SELECT '02', 'T', '3100', 'T3000', ''     , '020202' FROM dual
UNION ALL SELECT '02', 'T', '4100', 'T4000', ''     , '030303' FROM dual
UNION ALL SELECT '02', 'L', '3100', 'L3131', ''     , '02엘이다' FROM dual
UNION ALL SELECT '02', 'L', '3100', 'L313N', 'L3131', '02엘엘이다' FROM dual
UNION ALL SELECT '02', 'L', '3100', 'L31NN', 'L313N', '02엘엘엘이다' FROM dual
)
SELECT a, b, c, id, pid, nm
     , LEVEL lv
     , SYS_CONNECT_BY_PATH(nm, '>') pth
  FROM t
 START WITH b = 'T' AND pid IS NULL
 CONNECT BY PRIOR a = a
        AND PRIOR c = c
        AND (PRIOR id = pid OR (b = 'L' AND PRIOR b = 'T' AND pid IS NULL))
;

마농(manon94)님이 2014-05-19 11:09에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40460쿼리 좀 질문 드립니다.
천인성
2014-05-19
6578
40459쿼리 좀 질문 드립니다.
선한양심
2014-05-16
6391
40458쿼리 피봇문의드립니다. [1]
김진
2014-05-16
6637
40457계층형 쿼리 표현 [2]
초보초보
2014-05-15
7169
40456세션킬과 listener의 관계
디비초보
2014-05-15
6930
40455sql결과 문의드립니다. [1]
궁금
2014-05-14
6868
40453외부테이블에 의한 그룹핑에 대해 문의드립니다. [6]
초보
2014-05-14
6671
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다