고정 컬럼으로 횡으로 되어있는 테이블을 종으로 데이터 마이그레이션을 하려 합니다.
기존 제품출고 테이블은 아래와 같으며, 사이즈는 컬럼 1부터 10까지 고정되어 있습니다. 컬럼이 사이즈1, 사이즈2 이런식으로
10개가 만들어져 있는 테이블입니다.
WITH 제품출고 AS
(
SELECT '20150531' 일자, '1BYGJS01' 제품, '0' SIZE01, '2' SIZE02, '1' SIZE03, '1' SIZE04, '3' SIZE05, '3' SIZE06, '0' SIZE07, '0' SIZE08, '0' SIZE09,'0' SIZE10 FROM dual
UNION ALL SELECT '20150601' ,'1BYGJS01' , '0', '1', '3', '0', '2', '3', '0', '0', '0', '0' FROM dual
UNION ALL SELECT '20150603' ,'1BYGJS02' , '0', '0', '3', '1', '2', '3', '6', '2', '0', '0' FROM dual
UNION ALL SELECT '20150601' ,'1BYGJS03' , '0', '0', '0', '3', '1', '2', '4', '0', '2', '3' FROM dual
)
SELECT * FROM 제품출고
아래는 제품별로 사용하는 사이즈마스터 테이블이고요
WITH 제품사이즈 AS
(
SELECT '1BYGJS01' 제품, '02' 사이즈 FROM dual
UNION ALL SELECT '1BYGJS01' 제품, '03' 사이즈 FROM dual
UNION ALL SELECT '1BYGJS01' 제품, '04' 사이즈 FROM dual
UNION ALL SELECT '1BYGJS01' 제품, '05' 사이즈 FROM dual
UNION ALL SELECT '1BYGJS01' 제품, '06' 사이즈 FROM dual
UNION ALL SELECT '1BYGJS02' 제품, '03' 사이즈 FROM dual
UNION ALL SELECT '1BYGJS02' 제품, '04' 사이즈 FROM dual
UNION ALL SELECT '1BYGJS02' 제품, '05' 사이즈 FROM dual
UNION ALL SELECT '1BYGJS02' 제품, '06' 사이즈 FROM dual
UNION ALL SELECT '1BYGJS02' 제품, '07' 사이즈 FROM dual
UNION ALL SELECT '1BYGJS02' 제품, '08' 사이즈 FROM dual
UNION ALL SELECT '1BYGJS02' 제품, '09' 사이즈 FROM dual
UNION ALL SELECT '1BYGJS03' 제품, '04' 사이즈 FROM dual
UNION ALL SELECT '1BYGJS03' 제품, '05' 사이즈 FROM dual
UNION ALL SELECT '1BYGJS03' 제품, '06' 사이즈 FROM dual
UNION ALL SELECT '1BYGJS03' 제품, '07' 사이즈 FROM dual
UNION ALL SELECT '1BYGJS03' 제품, '09' 사이즈 FROM dual
UNION ALL SELECT '1BYGJS03' 제품, '10' 사이즈 FROM dual
)
SELECT * FROM 제품사이즈
이 두개테이블을 가지고 실제 제품이 사용하는 사이즈만 뽑아서 제품출고자료를 횡으로 만들어 낼 수 있을런지요...
아래 형태로 나오면 됩니다..
어떤 방식으로 해야할 지 감이 안오네요... 고수님들의 답변 기다리겠습니다.
WITH TOBE AS
(
SELECT '20150531' 일자, '1BYGJS01' 제품, '02' 사이즈, '2' 출고수량 FROM dual
UNION ALL SELECT '20150531', '1BYGJS01' , '03', '1' FROM dual
UNION ALL SELECT '20150531', '1BYGJS01' , '04', '1' FROM dual
UNION ALL SELECT '20150531', '1BYGJS01' , '05', '3' FROM dual
UNION ALL SELECT '20150531', '1BYGJS01' , '06', '3' FROM dual
UNION ALL SELECT '20150601', '1BYGJS01' , '02', '1' FROM dual
UNION ALL SELECT '20150601', '1BYGJS01' , '03', '3' FROM dual
UNION ALL SELECT '20150601', '1BYGJS01' , '04', '0' FROM dual
UNION ALL SELECT '20150601', '1BYGJS01' , '05', '2' FROM dual
UNION ALL SELECT '20150601', '1BYGJS01' , '06', '3' FROM dual
UNION ALL SELECT '20150603', '1BYGJS02' , '03', '3' FROM dual
UNION ALL SELECT '20150603', '1BYGJS02' , '04', '1' FROM dual
UNION ALL SELECT '20150603', '1BYGJS02' , '05', '2' FROM dual
UNION ALL SELECT '20150603', '1BYGJS02' , '06', '3' FROM dual
UNION ALL SELECT '20150603', '1BYGJS02' , '07', '6' FROM dual
UNION ALL SELECT '20150603', '1BYGJS02' , '08', '2' FROM dual
UNION ALL SELECT '20150603', '1BYGJS02' , '09', '0' FROM dual
UNION ALL SELECT '20150601', '1BYGJS03' , '04', '3' FROM dual
UNION ALL SELECT '20150601', '1BYGJS03' , '05', '1' FROM dual
UNION ALL SELECT '20150601', '1BYGJS03' , '06', '2' FROM dual
UNION ALL SELECT '20150601', '1BYGJS03' , '07', '4' FROM dual
UNION ALL SELECT '20150601', '1BYGJS03' , '09', '2' FROM dual
UNION ALL SELECT '20150601', '1BYGJS03' , '10', '3' FROM dual
)
SELECT * FROM TOBE
|