본문 바로가기
너알나알/오라클[Oracle]

[오라클]PIVOT 함수 사용 행+열 바꾸기

by ToBeIsFree 2024. 3. 21.

앞서 일정 갯수의 ROW 생성하기를 하여서 고정된 행을 기준으로 값을 표현 해보았습니다

  테이블 "한글" 테이블 "영문"
1 A
2 B
3 C
4    

그렇다면 반대로 행을 열로 바꿀 수 있을까요? 정답은 일단 “가능하다” 입니다

여러 방법이 있겠지만 PIVOT함수를 사용하여 아래와 같이 조회 해보도록 하겠습니다

 

  1 2 3 4
테이블 "영문" A B C  
PIVOT 함수

데이터를 변환하는 함수중 하나로 행 데이터를 열 데이터로 변환하여 집계결과를 보고서 형태로 출력할 때 주로 사용합니다. Pivot 함수의 기본적 문법은 다음과 같습니다

SELECT pivot 적용하지 않을 열들,
       변환하고자 하는 열
FROM 테이블
PIVOT (
  변환된 열들에 대한 집계 함수(sum,avg,max,min 등)
  FOR 변환하고자 하는 열을 기준으로 삼는 열
  IN ( 변환하고자 하는 열의 값들을 쉼표(',')로 구분 )
)

 

위 테이블의 결과값을 Pivot함수를 사용하여 표현하면 다음과 같습니다

SELECT *
  FROM (
        SELECT T1.SEQ, T2.SEQ_VALUE
         FROM  
              (SELECT LEVEL AS SEQ
                FROM DUAL
               CONNECT BY LEVEL <= 5) T1,
               
              (SELECT LEVEL AS SEQ, CHR(ASCII('A') - 1 + ROWNUM) AS SEQ_VALUE
                 FROM DUAL
              CONNECT BY LEVEL <= 3) T2

              WHERE T1.SEQ = T2.SEQ(+)
        ORDER BY T1.SEQ )
 PIVOT (
   MAX(SEQ_VALUE) FOR SEQ IN ( 1,2,3,4)
 )

댓글