본문 바로가기
공부방/DataBase

[Oracle] 가로(행) 데이터를 세로(열)로 출력

by SmartCow 2023. 12. 14.

1. 함수

UNPIVOT()

2. 문법

SELECT *
FROM [테이블]
UNPIVOT ([임의컬럼명1] FOR [임의컬럼명2] IN  [세로로 출력할 컬럼 ] );
임의컬럼명1 세로로 조할 데이터의 컬럼명을 지정
임의컬럼명2 세로로 조회하기로 한 컬럼들의 컬럼명
세로로 출력할 컬럼 가로(행)로 조회되던 데이터 중에 세로(열)로 출력하려고 하는 컬럼들

3. 예시

임의로 데이터를 생성하여 기본적인 조회결과( 각각의 컬럼이 가로로 출력됨)
SELECT 'A' AS NAME, 11 AS "1", 12 AS "2", 13 AS "3", 14 AS "4", 15 AS "5", 16 AS "6"
  FROM DUAL
 UNION        
SELECT 'B' AS NAME, 11 AS "1", 21 AS "2", 31 AS "3", 41 AS "4", 51 AS "5", 61 AS "6"
  FROM DUAL
UNPIVOT()함수를 이용하여 데이터를 세로로 조회
SELECT NAME, NO, VALUE
  FROM (
                SELECT 'A' AS NAME, 11 AS "1", 12 AS "2", 13 AS "3", 14 AS "4", 15 AS "5", 16 AS "6"
                FROM DUAL
                UNION        
                SELECT 'B' AS NAME, 11 AS "1", 21 AS "2", 31 AS "3", 41 AS "4", 51 AS "5", 61 AS "6"
                FROM DUAL
        )
UNPIVOT (VALUE FOR NO IN ("1", "2", "3", "4", "5", "6" ) )
임의컬럼1 : VALUE
임의컬럼2 : NO
로 지정하고 지정한 컬럼만 세로로 조회한 결과로써
세로로 조회하길 원하지 않던 데이터인 NAME는 세로로 조회된 데이터와 함께 나오기위해 세로로 조회된 데이터의 갯수만큼(현재 조회한 데이터에서는 6번) 중복 출력이 되며 세로로 조회된 값과 같이 조회