피봇(pivot)과 언피봇(unpivot) 응용
환경 : 오라클 12C
피봇은 주로 사용해왔으니... 원래 알던 개념이었다.
언피봇은 무조건 피봇의 반대라고 생각했었는데...
율촌 프로젝트 하면서 공부를 다시 하게 되었다.
언피봇과 피봇을 합치면 멋진 결과가 나오더라.
- MES 생산결과를 뽑아 낼때 투입대비, 생산량을 뽑아내는 쿼리에 적용했었다.
-- 탭키 간격이 안먹넹...
SELECT *
FROM
(
SELECT *
FROM
(
SELECT '데이타' A, 1 K, 10 DATA1, 20 DATA2
,'NO 1의 설명' NO1_DESC
,'NO 2의 설명' NO2_DESC
FROM DUAL
UNION ALL
SELECT '데이타' A, 2 K, 30 DATA1, 40 DATA2
,'NO 1의 설명' NO1_DESC
,'NO 2의 설명' NO2_DESC
FROM DUAL
UNION ALL
SELECT '데이타' A, 3 K, 50 DATA1, 60 DATA2
,'NO 1의 설명' NO1_DESC
,'NO 2의 설명' NO2_DESC
FROM DUAL
) A
UNPIVOT
(
( NO_DESC, DATA ) FOR
NO IN
(
(NO1_DESC, DATA1) AS 1,
(NO2_DESC, DATA2) AS 2
)
)
) T
PIVOT
(
MIN( DATA ) AS DATA FOR
K IN ( 1 , 2, 3 )
)
;
** 음... mssql이랑 다른가? 이상하게 동작하네...
오라클은 위 문법에 맞춰서 작성하면 잘 되던뎅...
동일한 결과로 mssql로 만들려면 다르게 작성해야 한다.
unpivot 도 내가 원래 알던대로 mssql은 동작하고...
오라클로 테스트를 못해보니까 아쉽네...
뭔가 좀 다르게 동작하는 듯 한데... 어떻게 보면 같은것 같기도 하고...
다음에 오라클 쓸때가 오면 다시 비교해봐야겠다.
'# 7) 데이타베이스 > 오라클' 카테고리의 다른 글
집계함수 MIN, MAX에 해당하는 다른 컬럼값은? (0) | 2019.11.03 |
---|---|
GROUP 콤마구분자로 연결하기 (0) | 2019.11.03 |
달력2 (0) | 2019.11.03 |
달력 1 (0) | 2019.11.03 |
[오라클] 동적쿼리 (0) | 2010.10.24 |