아래 DATA SET을 하나의 행으로 만들고 싶습니다.
쿼리 좀 부탁드립니다.
WITH DATA
AS (
SELECT '2001' YEAR, 'A' CATEGORY, '1' MONTH1, '3' MONTH2, '5' MONTH3 FROM DUAL
UNION ALL
SELECT '2001' YEAR, 'B' CATEGORY, '2' MONTH1, '4' MONTH2, '6' MONTH3 FROM DUAL
UNION ALL
SELECT '2002' YEAR, 'A' CATEGORY, '7' MONTH1, '9' MONTH2, '11' MONTH3 FROM DUAL
UNION ALL
SELECT '2002' YEAR, 'B' CATEGORY, '8' MONTH1, '10' MONTH2, '12' MONTH3 FROM DUAL
)
SELECT * FROM DATA
해당 데이터셋을
아래처럼 하나의 행으로 만들고 싶습니다.
SELECT '2001' YEAR, 'A' CATEGORY, '1' MONTH1, '3' MONTH2, '5' MONTH3
, '2001' YEAR, 'B' CATEGORY, '2' MONTH1, '4' MONTH2, '6' MONTH3
, '2002' YEAR, 'A' CATEGORY, '7' MONTH1, '9' MONTH2, '11' MONTH3
, '2002' YEAR, 'B' CATEGORY, '8' MONTH1, '10' MONTH2, '12' MONTH3
FROM DUAL
앞선 질문과 연결되는 건가요?
원본이 앞선 질문의 결과물이네요?
중간 결과물을 다시 가공하여 최종결과물을 뽑는것 보다는
애초에 원본 테이블 데이터로부터 중관과정을 거치지 않고 직접 최종결과물을 뽑는게 좋습니다.
최초의 원본 데이터를 보여주세요.
SELECT *
FROM (SELECT year, category, month1, month2, month3
, ROW_NUMBER() OVER(ORDER BY year, category) rn
FROM data
)
PIVOT ( MIN(year) year
, MIN(category) category
, MIN(month1) month1
, MIN(month2) month2
, MIN(month3) month3
FOR rn IN (1, 2, 3, 4)
)
;
이전 질문과 연결된 부분이 맞습니다.
이전 질문결과도 보여줘야 되고
본 질문결과도 보여줘야 되서 질문드렸었습니다.
(원본 데이터는 이전 질문에서 드렸던 DATA WITH 절입니다)
감사합니다!