세로를가로로 쿼리에 대하여 1 2 1,396

by 사이비 [2014.10.22 22:36:11]


날짜 제품코드 판매수량 판매가
20141001 AA 1 10
20141001 BB 2 20
20141002 AA 2 25
20141002 BB 4 40

위에서 처럼 가로 데이터를 아래 처럼 세로로 나오게 하려구요..ㅠ

날짜 제품1 제품2 제품3 제품4 제품5
20141001 AA/1/10 BB/2/20      
20141002 AA/2/25 BB/4/40      

*******************************************************************************************

날짜 제품코드 판매수량 판매가
20141001 FF 1 10
20141001 GG 2 20
20141001 HH 2 25
20141002 FF 4 40
20141002 GG 6 60
20141002 HH 5 50

위에서 처럼 가로 데이터를 아래 처럼 세로로 나오게 하려구요..ㅠ

날짜 제품1 제품2 제품3 제품4 제품5
20141001 FF/1/10 GG/2/20 HH/5/50    
20141002 FF/2/25 GG/4/40 HH/5/50    

위에 처럼 날짜 범위안에 제폼 코드별/수량/판매가를 출력하는 문제입니다.

날짜범위안에 제품코드는 동일(갯수)하구요.. 제품코드는 종류가 다양합니다.

결과에서 처럼 제품1~5까지 최대로 잡아놓은 상태에서

날짜별로 데이터를 출력하고 싶습니다.

감사합니다.

 

 

 

 

by 마농 [2014.10.23 09:33:09]
WITH t AS
(
SELECT '20141001' dt, 'FF' cd, 1 cnt, 10 amt FROM dual
UNION ALL SELECT '20141001', 'GG', 2, 20 FROM dual
UNION ALL SELECT '20141001', 'HH', 2, 25 FROM dual
UNION ALL SELECT '20141002', 'FF', 4, 40 FROM dual
UNION ALL SELECT '20141002', 'GG', 6, 60 FROM dual
UNION ALL SELECT '20141002', 'HH', 5, 50 FROM dual
)
SELECT dt
     , MIN(DECODE(rn, 1, cd)) AS cd1
     , MIN(DECODE(rn, 2, cd)) AS cd2
     , MIN(DECODE(rn, 3, cd)) AS cd3
     , MIN(DECODE(rn, 4, cd)) AS cd4
     , MIN(DECODE(rn, 5, cd)) AS cd5
  FROM (SELECT dt
             , cd||'/'||cnt||'/'||amt cd
             , ROW_NUMBER() OVER(PARTITION BY dt ORDER BY cd) rn
          FROM t
        )
 GROUP BY dt
 ORDER BY dt
;

 


by 사이비 [2014.10.23 20:11:29]
마농님~감사합니다. 어제글 올리고 게시글들보고
해결은했는데여 마농님께더심플하고좋아여~
감사드립니다 ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입