행열전환 connect by 0 5 1,068

by 애노리 [SQL Query] CONNECT BY LEVEL 오라클 행열전환 [2019.03.08 08:58:04]


aaaaa.png (27,104Bytes)

 

 

 

 

현재 제 쿼리의 결과값입니다.

 

왼쪽테이블을 오른쪽과같이 전환을 하고싶어 CONNECT BY LEVEL 을 사용하였는데, 결과값이 이상하게 나옵니다..

어떤식으로 오류가나는건지 감도 잡을수가없습니다.

 

 

    SELECT A ,
           B,
           REGEXP_SUBSTR (TEXT ,
                          '[^,]+',
                          1,
                          LEVEL)
              C
      FROM (
     
       테이블 내용
                                 
                                  ) A
CONNECT BY LEVEL <  level숫자
             
  ORDER BY 1, 2

 

좌측 쿼리에서 현재 아래와같이 쿼리 수행하였습니다.


             

by 애노리 [2019.03.08 08:59:32]

중복제거는 해서는 안됩니다. 중복이 허용되어야 합니다.


by 마농 [2019.03.08 09:09:39]

CONNECT BY LEVEL < n 행복제 방식은 dual 과 같은 1건 테이블에 적용하는 방법입니다.
여러건의 테이블에 직접 해당 방식을 사용하면 큰일(?)납니다.
http://gurubee.net/article/55635


by 애노리 [2019.03.08 09:23:55]

답변 감사합니다. 그럼 쿼리로는 저렇게 해결할수가 없는건가요?


by 마농 [2019.03.08 09:29:09]

위 댓글 참조 URL 에 보면 대응방법 나와 있습니다.
(SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 9) 와 조인하는 방법

WITH t AS
(
SELECT 1000 a, 3000 b, '+3341' c, 0 lvl                   FROM dual
UNION ALL SELECT 1000, 3003, '+3341,+3374,+3388,+3391', 3 FROM dual
UNION ALL SELECT 1000, 3004, '+3359'                  , 0 FROM dual
UNION ALL SELECT 1000, 3004, '-3518,-3607'            , 1 FROM dual
UNION ALL SELECT 1000, 3005, '+3344,+3374,+3518'      , 2 FROM dual
UNION ALL SELECT 1000, 3010, '+3341'                  , 0 FROM dual
UNION ALL SELECT 1000, 3011, '+3374,+3518'            , 1 FROM dual
UNION ALL SELECT 1011, 3004, '+3518,+3606,+3606'      , 2 FROM dual
UNION ALL SELECT 1013, 3038, '+3293,+3560'            , 1 FROM dual
UNION ALL SELECT 2206, 3001, '+3393,+3393'            , 1 FROM dual
UNION ALL SELECT 2447, 3010, '+3341'                  , 0 FROM dual
)
SELECT a.a
     , a.b
     , a.lvl
     , b.lv
     , REGEXP_SUBSTR(a.c, '[^,]+', 1, b.lv) x
  FROM t a
     , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 9) b
 WHERE b.lv <= a.lvl + 1
 ORDER BY a, b, lv
;

 


by 애노리 [2019.03.08 09:59:58]

와.. 대단히 감사합니다.. ㅠ 이게 되는거였군요 ㅠㅠ

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입