오라클 PIVOT 쿼리 문의 드립니다. 1

by 환상의딸기 [Oracle 기초] [2017.06.22 15:04:59]


안녕하세요

오라클로 PIVOT 피봇을 해야하는 경우가 생겨서 문의드립니다.

 

아래와 같은 값을 표현해야 하는게 전혀 모르겠어서 문의드립니다.ㅠㅠ

WITH T AS
(
    SELECT '20170621' A, '조식' B, '김치' C FROM DUAL UNION ALL
    SELECT '20170621' A, '조식' B, '김' C FROM DUAL UNION ALL
    SELECT '20170621' A, '조식' B, '밥' C FROM DUAL UNION ALL
    SELECT '20170621' A, '조식' B, '국' C FROM DUAL UNION ALL
    SELECT '20170621' A, '중식' B, '김치' C FROM DUAL UNION ALL
    SELECT '20170621' A, '중식' B, '김' C FROM DUAL UNION ALL
    SELECT '20170621' A, '중식' B, '밥' C FROM DUAL UNION ALL
    SELECT '20170621' A, '중식' B, '국' C FROM DUAL UNION ALL
    SELECT '20170622' A, '조식' B, '김치국' C FROM DUAL UNION ALL
    SELECT '20170622' A, '조식' B, '김밥' C FROM DUAL UNION ALL
    SELECT '20170622' A, '조식' B, '조미김' C FROM DUAL UNION ALL
    SELECT '20170622' A, '조식' B, '참치' C FROM DUAL UNION ALL
    SELECT '20170622' A, '중식' B, '김치' C FROM DUAL UNION ALL
    SELECT '20170622' A, '중식' B, '김' C FROM DUAL UNION ALL
    SELECT '20170622' A, '중식' B, '밥' C FROM DUAL UNION ALL
    SELECT '20170622' A, '중식' B, '국' C FROM DUAL
)
SELECT *
  FROM T


위 데이터를 아래와 같이 표현해야하는데 가능한가요?


             20170621  20170622
조식       김치      김치국
조식       김        김밥
조식       밥        조미김
조식       국        참치
중식       김치      김치
중식       김        김
중식       밥        밥
중식       국        국

 

부탁드리겠습니다.

by 마농 [2017.06.22 15:54:19]
SELECT *
  FROM (SELECT a, b, c
             , ROW_NUMBER() OVER(PARTITION BY a, b ORDER BY c) rn
          FROM t
         WHERE a IN ('20170621', '20170622')
        )
 PIVOT (MIN(c) FOR a IN (20170621, 20170622))
 ORDER BY b, rn
;

 


by 환상의딸기 [2017.06.23 09:09:40]

마농님 언제나 감사합니다 ㅎ

즐거운 하루 되세요 ㅎ

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