by minrule [SQL Query] ORACLE CONNECTBY [2023.03.31 16:21:05]
CONNECT BY LEVEL로 데이터 복사를 하려고했는데.. 동일 데이터가 중복발생해서 한참 고민하다가 문의드립니다.
테이블이 이런 형식으로 있다고하면
제품ID SUB제품수량
A-01 4
A-02 4
A-03 4
이것을 SUB제품수량만큼 row를 복사하고 싶어서 아래처럼 쿼리를 만들었습니다.
SELECT T.제품ID
, LEVEL
FROM 제품정보 T
CONNECT BY LEVEL <= T.제품수량
하지만 위 쿼리를 실행한 결과 제품ID,LEVEL 별로 1ROW씩 생성되어 12건의 ROW가 생성되는게 아니라 제 예상과는 다르게
각 제품ID 별로 LEVEL 1은 1ROW , LEVEL 2는 3ROW , LEVEL 3은 9ROW , LEVEL 4는 27ROW 가 생성되어
총120ROW가 생성되었습니다.
무식하게 DISTINCT를 쓰면 되기는 원하는 형식의 데이터로 조회되긴하지만... 속도가 너무 느려져서 못쓸것같습니다.
데이터 중복발생을 막을 방법이 있을까요?
Connect by level <= n 를 이용한 행 복제 방식은
dual 과 같이 1건의 자료에 대해 처리하는 방식입니다.
여러건의 자료에 직접 적용하면 안됩니다.
http://gurubee.net/article/55635