본문 바로가기
프로그래밍 언어/쿼리문 + Oracle + MySQL

[오라클] Oracle에서 컬럼의 값 만큼 행(Row)을 늘리는 쿼리

by 우림 2017. 6. 29.
1
2
3
4
5
6
7
SELECT ASNDKY,
       WAREKY,
       YQTYASN_I
FROM ASNDH
WHERE  1=1
AND DOCDAT = '20170531'
;
cs


이 쿼리를 실행하면 결과가 이렇게 나온다.


YQTYASN_I라는 컬럼의 값의 수만큼 row를 뿌려줘야 하는 경우가 생겼는데 어떻게 해야 할까?

오라클에서는 CONNECT BY를 사용하면 해결할 수 있다.


1
2
3
4
5
6
7
8
9
10
SELECT H.ASNDKY,
       H.WAREKY,
       H.YQTYASN_I
FROM   ASNDH H,
       (SELECT LEVEL NUM
        FROM   DUAL CONNECT BY LEVEL < 100) B
WHERE  B.NUM BETWEEN 1 AND H.YQTYASN_I
  AND  H.DOCDAT = '20170531'
ORDER BY ASNDKY
;
cs


여기서 CONNECT BY절의 LELEL값은 YQTYASN_I의 최대값보다 크게 설정해야 한다.


댓글