본문 바로가기

데이터베이스/MySQL, MariaDB

Row 조회 결과를 column 형태로 변환하기 (피벗 쿼리)

일반적으로 "행을 열로 변환" 또는 "피벗"이라고 불립니다. MySQL은 기본적으로 피벗 연산을 위한 내장 기능을 제공하지 않기 때문에, 이를 수행하려면 조건부 집계를 사용해야 합니다.

테이블 구조:

CREATE TABLE sales (
    year INT,
    month INT,
    amount INT
);

INSERT INTO sales VALUES
(2021, 1, 100),
(2021, 2, 150),
(2021, 3, 200);

위 테이블에서 각 월의 판매량을 열로 표시하려면 아래 쿼리를 사용합니다:

SELECT 
    year,
    SUM(CASE WHEN month = 1 THEN amount ELSE 0 END) AS Jan,
    SUM(CASE WHEN month = 2 THEN amount ELSE 0 END) AS Feb,
    SUM(CASE WHEN month = 3 THEN amount ELSE 0 END) AS Mar
    -- 추가 월은 이러한 방식으로 계속 확장
FROM sales
GROUP BY year;

위 쿼리는 각 월에 대해 CASE 문을 사용하여 해당 월의 판매량을 선택하고, 그 외의 월은 0으로 처리합니다. 그런 다음 SUM 함수를 사용하여 해당 월의 총액을 계산합니다.

이러한 방식으로 원하는 열 수만큼 확장할 수 있습니다.

반응형