2012/10/22 09:11

SYS_CONNECT_BY_PATH DB/SQL



오,
계층형 쿼리를 배운지 얼마 안되서,
또하나의 신기한 함수 발견.

요고를 이용하면 내가 원하는 순서대로,
특정 필드의 데이터를 한 row로 뽑을 수 있다.

어떻게 사용하느냐,, 
아래와 같다. 

1. 원하는 방식으로 rownum 생성.

SELECT '- ' || STS_CMT AS STS_CMT, ROWNUM AS NUM
   FROM TABLEA
  WHERE PJ_ID =  '1234567890'

2. SYS_CONNECT_BY_PATH 사용, 원하는 필드와 구분자를 넣어줌

SELECT SYS_CONNECT_BY_PATH (STS_CMT,'<br>') STS_CMT 
   FROM (
         SELECT '- ' || STS_CMT AS STS_CMT, ROWNUM AS NUM
           FROM TABLEA
  WHERE PJ_ID =  '1234567890'
     ) a
  START WITH NUM = 1
  CONNECT BY PRIOR NUM = NUM - 1

3. MAX를 이용해서 가장 긴 데이터 추출, SUBSTR를 이용해서 맨 앞에 구분자 삭제.

SELECT SUBSTR(MAX( SYS_CONNECT_BY_PATH (STS_CMT,'<br>')),5) STS_CMT 
   FROM (
SELECT '- ' || STS_CMT AS STS_CMT, ROWNUM AS NUM
           FROM TABLEA
  WHERE PJ_ID =  '1234567890'
     ) a
  START WITH NUM = 1
  CONNECT BY PRIOR NUM = NUM - 1

하나씩, 그렇게 배워가는 것,,

근데, 요새는 좀 버겁다..;; 줴길.. 
완주가 이렇게 힘든가.. 

덧글

댓글 입력 영역