안녕하세요... 아래 표와 같이 쿼리를 만들려고 합니다..
쿼리로 이게 가능 한가요.....?
머리가 한움큼 빠졌습니다 ㅠㅠ
부탁드립니다..
※ 표 수정하여 다시 올렸습니다.
SELECT 'A' 설비, 'AC' 약품, '주간' 작업조, 5 투입량, '2019-06-01' 투입일 FROM dual
UNION ALL SELECT 'A' 설비, 'AC' 약품, '야간' 작업조, 4 투입량, '2019-06-01' 투입일 FROM dual
UNION ALL SELECT 'A' 설비, 'AC' 약품, '주간' 작업조, 10 투입량, '2019-06-02' 투입일 FROM dual
UNION ALL SELECT 'A' 설비, 'AC' 약품, '주간' 작업조, 4 투입량, '2019-06-03' 투입일 FROM dual
UNION ALL SELECT 'A' 설비, 'AC' 약품, '주간' 작업조, 6 투입량, '2019-06-10' 투입일 FROM dual
UNION ALL SELECT 'A' 설비, 'AC' 약품, '야간' 작업조, 5 투입량, '2019-06-10' 투입일 FROM dual
UNION ALL SELECT 'A' 설비, 'AC' 약품, '주간' 작업조, 7 투입량, '2019-06-14' 투입일 FROM dual
UNION ALL SELECT 'B' 설비, '황' 약품, '주간' 작업조, 1 투입량, '2019-06-03' 투입일 FROM dual
UNION ALL SELECT 'B' 설비, '황' 약품, '주간' 작업조, 2 투입량, '2019-06-04' 투입일 FROM dual
UNION ALL SELECT 'B' 설비, '황' 약품, '주간' 작업조, 4 투입량, '2019-06-05' 투입일 FROM dual
UNION ALL SELECT 'B' 설비, 'CA' 약품, '주간' 작업조, 5 투입량, '2019-06-03' 투입일 FROM dual
UNION ALL SELECT 'B' 설비, 'CA' 약품, '야간' 작업조, 6 투입량, '2019-06-04' 투입일 FROM dual
UNION ALL SELECT 'B' 설비, 'CA' 약품, '야간' 작업조, 9 투입량, '2019-06-10' 투입일 FROM dual
UNION ALL SELECT 'B' 설비, 'CA' 약품, '주간' 작업조, 7 투입량, '2019-06-14' 투입일 FROM dual
UNION ALL SELECT 'C' 설비, '알루미늄' 약품, '주간' 작업조, 9 투입량, '2019-06-03' 투입일 FROM dual
UNION ALL SELECT 'C' 설비, '알루미늄' 약품, '야간' 작업조, 2 투입량, '2019-06-03' 투입일 FROM dual
UNION ALL SELECT 'C' 설비, '알루미늄' 약품, '주간' 작업조, 1 투입량, '2019-06-05' 투입일 FROM dual
UNION ALL SELECT 'C' 설비, '알루미늄' 약품, '야간' 작업조, 2 투입량, '2019-06-05' 투입일 FROM dual
UNION ALL SELECT 'C' 설비, '알루미늄' 약품, '주간' 작업조, 5 투입량, '2019-06-06' 투입일 FROM dual
UNION ALL SELECT 'C' 설비, '알루미늄' 약품, '야간' 작업조, 7 투입량, '2019-06-11' 투입일 FROM dual
UNION ALL SELECT 'C' 설비, '알루미늄' 약품, '주간' 작업조, 7 투입량, '2019-06-13' 투입일 FROM dual
설비 | 약품 | 작업조 | 1일 | 2일 | 3일 | 4일 | 5일 | 6일 | 7일 | 8일 | 9일 | 10일 | 11일 | 12일 | 13일 | 14일 | 15일 | 16일 | 17일 | 18일 | 19일 | 20일 | 21일 | 22일 | 23일 | 24일 | 25일 | 26일 | 27일 | 28일 | 29일 | 30일 | 31일 | 주,야누계 | 종합누계 |
a | AC | 주간 | 5 | 10 | 4 | 6 | 7 | 32 | 41 | ||||||||||||||||||||||||||
야간 | 4 | 5 | 9 | ||||||||||||||||||||||||||||||||
b | 황 | 주간 | 1 | 2 | 4 | 7 | 7 | ||||||||||||||||||||||||||||
야간 | 0 | ||||||||||||||||||||||||||||||||||
CA | 주간 | 5 | 7 | 12 | 27 | ||||||||||||||||||||||||||||||
야간 | 6 | 9 | 15 | ||||||||||||||||||||||||||||||||
c | 알루미늄 | 주간 | 9 | 1 | 5 | 7 | 22 | 33 | |||||||||||||||||||||||||||
야간 | 2 | 2 | 7 | 11 |
WITH T AS ( SELECT 'A' 설비, 'AC' 약품, '주간' 작업조, 5 투입량, '2019-06-01' 투입일 FROM dual UNION ALL SELECT 'A' 설비, 'AC' 약품, '야간' 작업조, 4 투입량, '2019-06-01' 투입일 FROM dual UNION ALL SELECT 'A' 설비, 'AC' 약품, '주간' 작업조, 10 투입량, '2019-06-02' 투입일 FROM dual UNION ALL SELECT 'A' 설비, 'AC' 약품, '주간' 작업조, 4 투입량, '2019-06-03' 투입일 FROM dual UNION ALL SELECT 'A' 설비, 'AC' 약품, '주간' 작업조, 6 투입량, '2019-06-10' 투입일 FROM dual UNION ALL SELECT 'A' 설비, 'AC' 약품, '야간' 작업조, 5 투입량, '2019-06-10' 투입일 FROM dual UNION ALL SELECT 'A' 설비, 'AC' 약품, '주간' 작업조, 7 투입량, '2019-06-14' 투입일 FROM dual UNION ALL SELECT 'B' 설비, '황' 약품, '주간' 작업조, 1 투입량, '2019-06-03' 투입일 FROM dual UNION ALL SELECT 'B' 설비, '황' 약품, '주간' 작업조, 2 투입량, '2019-06-04' 투입일 FROM dual UNION ALL SELECT 'B' 설비, '황' 약품, '주간' 작업조, 4 투입량, '2019-06-05' 투입일 FROM dual UNION ALL SELECT 'B' 설비, 'CA' 약품, '주간' 작업조, 5 투입량, '2019-06-03' 투입일 FROM dual UNION ALL SELECT 'B' 설비, 'CA' 약품, '야간' 작업조, 6 투입량, '2019-06-04' 투입일 FROM dual UNION ALL SELECT 'B' 설비, 'CA' 약품, '야간' 작업조, 9 투입량, '2019-06-10' 투입일 FROM dual UNION ALL SELECT 'B' 설비, 'CA' 약품, '주간' 작업조, 7 투입량, '2019-06-14' 투입일 FROM dual UNION ALL SELECT 'C' 설비, '알루미늄' 약품, '주간' 작업조, 9 투입량, '2019-06-03' 투입일 FROM dual UNION ALL SELECT 'C' 설비, '알루미늄' 약품, '야간' 작업조, 2 투입량, '2019-06-03' 투입일 FROM dual UNION ALL SELECT 'C' 설비, '알루미늄' 약품, '주간' 작업조, 1 투입량, '2019-06-05' 투입일 FROM dual UNION ALL SELECT 'C' 설비, '알루미늄' 약품, '야간' 작업조, 2 투입량, '2019-06-05' 투입일 FROM dual UNION ALL SELECT 'C' 설비, '알루미늄' 약품, '주간' 작업조, 5 투입량, '2019-06-06' 투입일 FROM dual UNION ALL SELECT 'C' 설비, '알루미늄' 약품, '야간' 작업조, 7 투입량, '2019-06-11' 투입일 FROM dual UNION ALL SELECT 'C' 설비, '알루미늄' 약품, '주간' 작업조, 7 투입량, '2019-06-13' 투입일 FROM dual ) SELECT A.설비, A.약품, B.작업조, D01, D02, D03, D04, D05, D06, D07, D08, D09, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24, D25, D26, D27, D28, D29, D30, D31, NVL(A.주야누계,0) AS 주야누계, NVL(A.종합누계,0) AS 종합누계 FROM (SELECT '주간' AS 작업조 FROM DUAL UNION ALL SELECT '야간' AS 작업조 FROM DUAL) B LEFT OUTER JOIN (SELECT * FROM ( SELECT 설비, 약품, 작업조, 투입량, SUBSTR(투입일,9) AS 투입일 , SUM(투입량) OVER(PARTITION BY 설비,약품,작업조) AS 주야누계 , SUM(투입량) OVER(PARTITION BY 설비,약품) AS 종합누계 FROM T ) PIVOT (SUM(투입량) FOR 투입일 IN ('01' AS D01,'02' AS D02,'03' AS D03,'04' AS D04,'05' AS D05,'06' AS D06,'07' AS D07,'08' AS D08,'09' AS D09,'10' AS D10 ,'11' AS D11,'12' AS D12,'13' AS D13,'14' AS D14,'15' AS D15,'16' AS D16,'17' AS D17,'18' AS D18,'19' AS D19,'20' AS D20 ,'21' AS D21,'22' AS D22,'23' AS D23,'24' AS D24,'25' AS D25,'26' AS D26,'27' AS D27,'28' AS D28,'29' AS D29,'30' AS D30,'31' AS D31)) ) A PARTITION BY (A.설비,A.약품) ON (A.작업조 = B.작업조) ORDER BY A.설비, REGEXP_COUNT(SUBSTR(A.약품,1,1),'[가-힝]') DESC, A.약품, A.작업조 DESC --SELECT LISTAGG(''''||LPAD(LEVEL,2,'0')||''' AS D' || LPAD(LEVEL,2,'0') ,',') WITHIN GROUP(ORDER BY LEVEL) FROM DUAL CONNECT BY LEVEL <= 31 --SELECT LISTAGG( 'D' || LPAD(LEVEL,2,'0') ,', ') WITHIN GROUP(ORDER BY LEVEL) FROM DUAL CONNECT BY LEVEL <= 31