주문 수량을 박스입수 만큼 row를 분리 4 82

by 지현명 [SQL Query] [2019.05.20 10:11:06]


사용하는 DB : PostgreSQL 11.1

한상품의 주문 수량이 50일 경우 만약 그 상품의 박스 입수가 20이면

한줄로 입력된 50을 아래와 같이 해당 박스 입수 만큼 row를 만드는 쿼리를 어떻게 구현 할 수 있을까요? (켜서나 pl/pgsql반복문 사용하지 않고 query로만..)

CREATE TABLE public.prod_master (
    prodcd varchar(10) NULL,
    boxinqty int4 NULL  --박스입수
);

CREATE TABLE public.orders (
    shipdate date NULL,
    prodcd varchar(10) NULL,
    orderqty int4 NULL --주문수량
);


insert into prod_master
values('8809123', 20);  --한박스에 20개씩 

insert into orders
values('2019-05-20', '8809123', 50);  --총주문 수량 50개
 

이와 같이 주문이 들어 왔을 경우

As-Is
shipdate prodcd orderqty
2019-05-20 8809123 50

 

아래와 같이 row를 박스 입수 만큼 row를 분리 하는 쿼리가 가능한지...

To-Be
shipdate prodcd orderqty
2019-05-20 8809123 20
2019-05-20 8809123 20
2019-05-20 8809123 10