오라클 Oracle 피벗 PIVOT UNPIVOT 으로 행렬 column을 row로 변환 하기
오라클 프로그램에서 데이터 조회 시 행으로 나온 데이터를 열로 변경하거나 할 경우
한 줄씩 서브쿼리를 작성해서 사용하기도 하는데요.
변경해야 할 칼럼이 많아지면 쿼리도 길어지게 됩니다.
이럴 때 피벗을 이용하면 간단하게 처리할 수 있는데요.
그럼 방법을 알아보겠습니다.
피벗을 보여드리기 위해 간단한 테이블을 준비했습니다.
6개의 컬럼이 있는 테이블입니다. SELECT * FROM TEST_PIVOT
이제 1개의 row를 조회해서 row로 나오도록 해보겠습니다.
col1 값이 10인 것만 조회했습니다 SELECT *
FROM TEST_PIVOT
WHERE COL1 = 10
1. UNPIVOT
피벗을 사용하는 방법입니다.
SELECT *
FROM ( 피벗 대상 쿼리문)
UNPIVOT (그룹 함수 FOR 피벗 칼럼 IN ( 피벗 컬럼 .....)) SELECT COL_NAME
,VAL
FROM
(
SELECT *
FROM TEST_PIVOT
)
UNPIVOT ( VAL FOR COL_NAME IN (COL1,COL2,COL3,COL4,COL5,COL6) )
결괏값을 보면 row 형태로 값이 변경되었습니다.
col1,col2만 칼럼만 조회되도록 하면 SELECT COL_NAME
,VAL
FROM
(
SELECT *
FROM TEST_PIVOT
wherecol1 = 10
)
UNPIVOT ( VAL
FOR COL_NAME IN (COL1,COL2) -- 조회되고자 하는 칼럼
)
지정한 2개 컬러만 지정됩니다.
전체 내용을 조회하면
row가 추가돼서 조회됩니다. SELECT COL_NAME
,VAL
FROM
(
SELECT *
FROM TEST_PIVOT
-- where col1 = 10
)
UNPIVOT ( VAL
FOR COL_NAME IN (COL1,COL2) -- 조회되고자 하는 칼럼
)
피벗 된 데이터에서 col1만 조회할 수 있습니다. SELECT COL_NAME
,VAL
FROM
(
SELECT *
FROM TEST_PIVOT
-- WHERE COL1 = 10
)
UNPIVOT ( VAL
FOR COL_NAME IN (COL1,COL2,COL3,COL4,COL5,COL6)
)
WHERE COL_NAME = 'COL1'
2. PIVOT
PIVOT 은 그룹 함수와 함께 사용해야 합니다.
간단한 샘플을 준비했습니다.
SELECT SEQ,COL1
FROM TEST_PIVOT
피벗을 적용하기 위해 MAX 함수를 사용했습니다.
MIN, COUNT, SUM 등을 사용할 수 있습니다. SELECT *
FROM
(
SELECT SEQ
,COL1
FROM TEST_PIVOT
)
PIVOT ( MAX(COL1)
FOR SEQ IN (1,2,3,4)
)
;
오라클 Oracle 피벗 PIVOT UNPIVOT 으로 행렬 column을 row로 변환 하기를 알아보았습니다.
COIN119 address modify / delete reply
잘보고 갑니다~
Reply: momo is address modify / delete reply
네 방문해주셔서 감사합니다
팡이원 address modify / delete reply
포스팅 잘 보고 가네요~
오늘도 좋은 하루 보내세요~
Reply: momo is address modify / delete reply
네 방문해주셔서 감사합니다 필요하실 때 참고하세요
空空(공공) address modify / delete reply
요건 좀 어려운 내용이네요 ㅎ
3월을 기분 좋게 시작하시기 바랍니다
Reply: momo is address modify / delete reply
네 필요하실 때 참고해보세요
COIN119 address modify / delete reply
자주 올게요~
즐거운 휴일 되십숑~
Reply: momo is address modify / delete reply
네 저도 들리겠습니다.
흙수저 address modify / delete reply
와... 다양한 분야에서 대단하십니다!!!!!
Reply: momo is address modify / delete reply
하하 별말씀을요
타타미 address modify / delete reply
포스팅 잘 보고 갑니다~^^
Reply: momo is address modify / delete reply
네 방문해주셔서 감사합니다.
ilime address modify / delete reply
오라클 쿼리 프로그램 다루는 법도 포스팅해주셨군요 ㅎㅎㅎㅎ
요즘 데이터베이스 공부중인데 덕분에 좋은 정보 얻고 갑니다 :)
Reply: momo is address modify / delete reply
아 데이타베이스공부중이시군요..
화이팅입니다.`~^^