본문 바로가기
MS SQL

MS SQL_ UNPIVOT 사용하는 방법

by 디디찐 2023. 4. 28.
반응형

안녕하세요, 오늘은 UNPIVOT을 사용하는 방법을 소개드리도록 하겠습니다. 

지난 번 PIVOT 사용법도 업로드 하였으니 참고 부탁드립니다. 

PIVOT은 특정 행의 값들을 열로 변환해주는 함수입니다. 그의 반대 개념을 가진 함수가 UNPIVOT 입니다.

 

https://jjin-todo.tistory.com/entry/MS-SQLPIVOT%EC%82%AC%EC%9A%A9%EB%B2%95

 

MS SQL_PIVOT 사용법

1. PIVOT 이란? 특정 행의 값을 열로 변환해주는 함수 2. PIVOT 사용법 SELECT * FROM (테이블 & 집계할 쿼리문) PIVOT (그룹함수 (집계컬럼) FOR 피벗 대상 컬럼명 IN([피벗컬럼값],...) ) AS PIVOT_RESULT ✅그룹함

jjin-todo.tistory.com

1. UNPIVOT 이란?

특정 열들을 행의 집합으로 변환해주는 함수 (가로 -> 세로)

이미지로 보시면 이해가 편하실 거에요. (이해를 위한 간단한 이미지입니다. )

2. UNPIVOT 사용법

SELECT *
  FROM ( 테이블 및 집계할 쿼리문 ) AS tab
UNPIVOT ( 집계값 컬럼명 FOR 언피봇 대상 컬럼명 IN ([UNPIVOT할 컬럼값], ... ) AS unpvt

- 집계값 컬럼명: 기존 테이블의 행 데이터를 담을 새 컬럼명을 지정
- 언피봇 대상 컬럼명: 기존 테이블의 컬럼들을 데이터로 담을 새 컬럼명 지정

- UNPIVOT할 컬럼값: 기존 테이블의 컬럼명

 

3. UNPIVOT 사용예제

CREATE TABLE #PRICE (
    PRODUCT  VARCHAR(10)
    , 올리브영 INT
    , 아리따움 INT
    , 화해    INT
)
INSERT INTO #PRICE(PRODUCT, 올리브영, 아리따움, 화해)
VALUES 
('클렌징폼',10000,5000,23000)
, ('립스틱',10000,5000,23000)
, ('블러셔',10000,5000,23000)
, ('쿠션',10000,5000,23000)


SELECT PRODUCT
       , 판매처 
       , 가격
 FROM #PRICE
UNPIVOT (가격 FOR 판매처 IN ([올리브영],[아리따움], [화해])) AS UNPVT
 
 SELECT PRODUCT, MIN(가격) AS 최저가
   FROM (
         SELECT PRODUCT
               , 판매처 
               , 가격
           FROM #PRICE       
           UNPIVOT (가격 FOR 판매처 IN ([올리브영],[아리따움], [화해])) AS UNPVT
         ) AS A 
  GROUP BY PRODUCT
반응형