사용자 도구

사이트 도구


사이드바

기술문서:레퍼런스:쿼리:응용:unpivot_query

문서의 이전 판입니다!


Unpivot Query

최소 지원 버전은 약간의 차이가 있을 수 있습니다.
물리명 논리명 타입
year 문자형
1월 일수 jan_day_cnt 숫자형
2월 일수 feb_day_cnt 숫자형
3월 일수 mar_day_cnt 숫자형
4월 일수 apr_day_cnt 숫자형
5월 일수 may_day_cnt 숫자형
6월 일수 jun_day_cnt 숫자형
7월 일수 jul_day_cnt 숫자형
8월 일수 aug_day_cnt 숫자형
9월 일수 sep_day_cnt 숫자형
10월 일수 oct_day_cnt 숫자형
11월 일수 nov_day_cnt 숫자형
12월 일수 dec_day_cnt 숫자형

CREATE TABLE ex_unpivot (
	year VARCHAR(100) NOT NULL,
	jan_day_cnt INT NOT NULL,
	feb_day_cnt INT NOT NULL,
	mar_day_cnt INT NOT NULL,
	apr_day_cnt INT NOT NULL,
	may_day_cnt INT NOT NULL,
	jun_day_cnt INT NOT NULL,
	jul_day_cnt INT NOT NULL,
	aug_day_cnt INT NOT NULL,
	sep_day_cnt INT NOT NULL,
	oct_day_cnt INT NOT NULL,
	nov_day_cnt INT NOT NULL,
	dec_day_cnt INT NOT NULL
);

INSERT INTO ex_unpivot (
	year
	, jan_day_cnt
	, feb_day_cnt
	, mar_day_cnt
	, apr_day_cnt
	, may_day_cnt
	, jun_day_cnt
	, jul_day_cnt
	, aug_day_cnt
	, sep_day_cnt
	, oct_day_cnt
	, nov_day_cnt
	, dec_day_cnt
) VALUES (
	'2025'
	, 31
	, 28
	, 31
	, 30
	, 31
	, 30
	, 31
	, 31
	, 30
	, 31
	, 30
	, 31
);

MySQL/MariaDB

-- MySQL 4.0 이상/MariaDB 5.1 이상
SELECT
	year
	, 'jan' AS month
	, jan_day_cnt AS day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year, 'feb'
	, feb_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'mar', mar_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'apr'
	, apr_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'may'
	, may_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'jun'
	, jun_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'jul'
	, jul_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'aug'
	, aug_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'sep'
	, sep_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'oct'
	, oct_day_cnt
	FROM ex_unpivot
UNION ALL
SELECT
	year
	, 'nov'
	, nov_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'dec'
	, dec_day_cnt
FROM
	ex_unpivot
;

MSSQL

-- MSSQL 2005 이상
SELECT
	year
	, 'jan' AS month
	, jan_day_cnt AS day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year, 'feb'
	, feb_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'mar', mar_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'apr'
	, apr_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'may'
	, may_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'jun'
	, jun_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'jul'
	, jul_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'aug'
	, aug_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'sep'
	, sep_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'oct'
	, oct_day_cnt
	FROM ex_unpivot
UNION ALL
SELECT
	year
	, 'nov'
	, nov_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'dec'
	, dec_day_cnt
FROM
	ex_unpivot
;

Oracle/Tibero

-- Oracle 9i 이상/Tibero 4 이상
SELECT
	year
	, 'jan' AS month
	, jan_day_cnt AS day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year, 'feb'
	, feb_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'mar', mar_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'apr'
	, apr_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'may'
	, may_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'jun'
	, jun_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'jul'
	, jul_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'aug'
	, aug_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'sep'
	, sep_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'oct'
	, oct_day_cnt
	FROM ex_unpivot
UNION ALL
SELECT
	year
	, 'nov'
	, nov_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'dec'
	, dec_day_cnt
FROM
	ex_unpivot
;

PostgreSQL

-- PostgreSQL 7.1 이상
SELECT
	year
	, 'jan' AS month
	, jan_day_cnt AS day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year, 'feb'
	, feb_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'mar', mar_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'apr'
	, apr_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'may'
	, may_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'jun'
	, jun_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'jul'
	, jul_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'aug'
	, aug_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'sep'
	, sep_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'oct'
	, oct_day_cnt
	FROM ex_unpivot
UNION ALL
SELECT
	year
	, 'nov'
	, nov_day_cnt
FROM
	ex_unpivot
UNION ALL
SELECT
	year
	, 'dec'
	, dec_day_cnt
FROM
	ex_unpivot
;