행 열 변환 쿼리 문의 드립니다. 1 3 1,591

by 소연짱 [2016.07.02 15:30:30]


안녕하세요~

피봇 형태 쿼리 문의 드립니다.

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  

 

여러 형태로 해봐도 참 어렵습니다 ㅠㅠ

고수님들의 조언 부탁드리겠습니다.

감사합니다.

 

by 마농 [2016.07.04 08:41:47]
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
;

 


by 소연짱 [2016.07.04 09:59:06]

마농님! 정말 답변 감사드립니다.

다름이 아니라

해당 데이터가  model 에 데이터가 A, B 고정 값이 아니라 

row 데이터 갯수가 1000건 이상 되는 데이터라서 전체  union all 로 지정하기 힘든 부분이 있습니다.

해당 쿼리는 갯수가 정해진 쿼리만 해당하는것인지 궁금합니다.


by 마농 [2016.07.04 10:01:26]

With 문은 무시하세요.

아래 쪽 쿼리 작성 스타일만 보시면 됩니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입