안녕하세요~
피봇 형태 쿼리 문의 드립니다.
SELECT MODEL, STYLE, GENDER, OP_CODE, PRO_CODE, QTY
FROM DUAL
MODEL | STYLE | GENDER | OP_CODE | PRO_CODE | QTY |
A | 01 | A | ASSY | A2 | 8 |
B | 09 | A | BOTTOM | OUTSOLE | 8 |
C | 33 | A | SFT | SP01 | 8 |
D | 12 | A | SFT | SP02 | 8 |
E | 42 | A | UPPER | U1 | 8 |
F | 21 | A | UPPER | U2 | 8 |
해당 쿼리를
OP_CODE, PRO_CODE, QTY 만 열로 변환해서
이런 형태로 가능한지 문의 드립니다.
오라클 10이하 버전이라 PIVOT 기능을 사용하지 못하고 있습니다 ㅠㅠ
MODEL | STYLE | GENDER | ASSY | BOTTOM | SFT | UPPER | ||
A2 | OUTSOLE | SP01 | SP02 | U1 | U2 | |||
A | 01 | A | 8 | |||||
B | 09 | A | 8 | |||||
C | 33 | A | 8 | |||||
D | 12 | A | 8 | |||||
E | 42 | A | 8 |
여러 형태로 해봐도 참 어렵습니다 ㅠㅠ
고수님들의 조언 부탁드리겠습니다.
감사합니다.
WITH t AS ( SELECT 'A' model, '01' style, 'A' gender, 'ASSY' op_code, 'A2' pro_code, 8 qty FROM dual UNION ALL SELECT 'B', '09', 'A', 'BOTTOM', 'OUTSOLE', 8 FROM dual UNION ALL SELECT 'C', '33', 'A', 'SFT' , 'SP01' , 8 FROM dual UNION ALL SELECT 'D', '12', 'A', 'SFT' , 'SP02' , 8 FROM dual UNION ALL SELECT 'E', '42', 'A', 'UPPER' , 'U1' , 8 FROM dual UNION ALL SELECT 'F', '21', 'A', 'UPPER' , 'U2' , 8 FROM dual ) SELECT model, style, gender , SUM(CASE WHEN op_code = 'ASSY' AND pro_code = 'A2' THEN qty END) assy_a2 , SUM(CASE WHEN op_code = 'BOTTOM' AND pro_code = 'OUTSOLE' THEN qty END) bottom_outsole , SUM(CASE WHEN op_code = 'SFT' AND pro_code = 'SP01' THEN qty END) sft_sp01 , SUM(CASE WHEN op_code = 'SFT' AND pro_code = 'SP02' THEN qty END) sft_sp02 , SUM(CASE WHEN op_code = 'UPPER' AND pro_code = 'U1' THEN qty END) upper_u1 , SUM(CASE WHEN op_code = 'UPPER' AND pro_code = 'U2' THEN qty END) upper_u2 FROM t GROUP BY model, style, gender ORDER BY model, style, gender ;