by 열공이 [SQL Query] 레코드복제 [2019.09.19 21:51:53]
데이터 이행을 하는데 다음의 QUERY가 필요하여 도움을 청합니다.
제품공정테이블(tb_product_works)에서 통과공정코드 길이 [ length(passed_works)] 만큼의 레코드를 만들고(max 4개), 각 레코드에 1~4까지의 번호가 부여된 레코드를 얻고 싶습니다.
table명 : tb_product_works -- 제품공정 테이블
항목 : product_no varchar2(10) not null , -- 제품번호 pk
passed_works varchar2(4), -- 통과공정코드: 1byte부터 4byte까지 공정통과시 마다 추가됨 (B --> BC--> BCK --> BCKT)
product_size varchar2(5) -- 제품size코드
sample) lenhgth(passed_works)가 2인 경우
product_no : A0010
passed_works : BC -- length(passed_works)는 2
product_size : D010
원하는형태 (2개를 복제함)
product_no : A0010
seq : 1
passed_works : BC
product_size : D010
product_no : A0010
seq : 2
passed_works : BC
product_size : D010
sample) lenhgth(passed_works)가 3인 경우
product_no : A0020
passed_works : AXC -- length(passed_works)는 3
product_size : D020
원하는형태 (3개를 복제함)
product_no : A0020
seq : 1
passed_works : AXC
product_size : D020
product_no : A0020
seq : 2
passed_works : AXC
product_size : D020
product_no : A0020
seq : 3
passed_works : AXC
product_size : D020
select 'A0100' id, 'BC' works from dual union all
select 'A0200' , 'AXC' from dual
A0100, BC -- length(works)가 2임 ==> 2개 레코드복제
A0200, AXC -- length(works)가 3임 ==> 3개 레코드복제
<원하는 data>
A0100,1,BC
A0100,2,BC
A0200,1,AXC
A0200,2,AXC
A0200,3,AXC