문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 다음 판 | 이전 판 | ||
|
기술문서:레퍼런스:쿼리:응용:unpivot_query [2025/04/11 17:56] carlito76 만듦 |
기술문서:레퍼런스:쿼리:응용:unpivot_query [2025/11/27 12:07] (현재) carlito76 |
||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| {{htmlmetatags> | {{htmlmetatags> | ||
| - | metatag-description=(언피봇 쿼리, Unpivot Query, 언피봇, Unpivot, 데이터베이스, | + | metatag-description=(언피벗 쿼리, Unpivot Query, 언피벗, Unpivot, 데이터베이스, |
| - | metatag-og: | + | metatag-og: |
| }} | }} | ||
| ====== Unpivot Query ====== | ====== Unpivot Query ====== | ||
| - | ^ 물리명 | + | <note tip> |
| - | | FIXME | FIXME | FIXME | FIXME | | + | 최소 지원 버전은 약간의 차이가 있을 수 있습니다. |
| + | </ | ||
| + | ===== 테이블 명세 ===== | ||
| + | ^ 물리명 | ||
| + | | 년 | year | 문자형 | 100 | | ||
| + | | 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 | 숫자형 | | | ||
| + | |||
| + | ===== SQL 스크립트 ===== | ||
| <sxh sql; gutter: true; title: DDL;> | <sxh sql; gutter: true; title: DDL;> | ||
| - | -- FIXME | + | 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 | ||
| + | ); | ||
| </ | </ | ||
| <sxh sql; gutter: true; title: DML;> | <sxh sql; gutter: true; title: DML;> | ||
| - | -- FIXME | + | INSERT INTO ex_unpivot ( |
| + | year | ||
| + | , jan_day_cnt, | ||
| + | , apr_day_cnt, | ||
| + | , jul_day_cnt, | ||
| + | , oct_day_cnt, | ||
| + | ) VALUES ( | ||
| + | ' | ||
| + | , 31, 28, 31 | ||
| + | , 30, 31, 30 | ||
| + | , 31, 31, 30 | ||
| + | , 31, 30, 31 | ||
| + | ); | ||
| </ | </ | ||
| ===== MySQL/ | ===== MySQL/ | ||
| <sxh sql; gutter: true;> | <sxh sql; gutter: true;> | ||
| - | -- FIXME | + | /* |
| + | MySQL 4.0 이상/ | ||
| + | */ | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , jan_day_cnt AS day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , feb_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , mar_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , apr_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , may_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , jun_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , jul_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , aug_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , sep_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , oct_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , nov_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , dec_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | ; | ||
| </ | </ | ||
| ===== MSSQL ===== | ===== MSSQL ===== | ||
| <sxh sql; gutter: true;> | <sxh sql; gutter: true;> | ||
| - | -- FIXME | + | /* |
| + | MSSQL 2000 이상 | ||
| + | */ | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , jan_day_cnt AS day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , feb_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , mar_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , apr_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , may_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , jun_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , jul_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , aug_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , sep_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , oct_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , nov_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , dec_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | ; | ||
| + | |||
| + | /* | ||
| + | MSSQL 2005 이상 | ||
| + | */ | ||
| + | SELECT | ||
| + | year | ||
| + | , REPLACE(month, | ||
| + | , day_cnt | ||
| + | FROM ( | ||
| + | SELECT | ||
| + | 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 | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | ) src | ||
| + | UNPIVOT ( | ||
| + | day_cnt FOR month IN ( | ||
| + | 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 | ||
| + | ) | ||
| + | ) unpvt | ||
| + | ; | ||
| </ | </ | ||
| ===== Oracle/ | ===== Oracle/ | ||
| <sxh sql; gutter: true;> | <sxh sql; gutter: true;> | ||
| - | -- FIXME | + | /* |
| + | Oracle 9i 이상/ | ||
| + | */ | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , jan_day_cnt AS day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , feb_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , mar_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , apr_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , may_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , jun_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , jul_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , aug_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , sep_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , oct_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , nov_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , dec_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | ; | ||
| + | |||
| + | /* | ||
| + | Oracle 11g 이상/ | ||
| + | */ | ||
| + | SELECT | ||
| + | year | ||
| + | , month | ||
| + | , day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNPIVOT ( | ||
| + | day_cnt FOR month IN ( | ||
| + | jan_day_cnt AS ' | ||
| + | , feb_day_cnt AS ' | ||
| + | , mar_day_cnt AS ' | ||
| + | , apr_day_cnt AS ' | ||
| + | , may_day_cnt AS ' | ||
| + | , jun_day_cnt AS ' | ||
| + | , jul_day_cnt AS ' | ||
| + | , aug_day_cnt AS ' | ||
| + | , sep_day_cnt AS ' | ||
| + | , oct_day_cnt AS ' | ||
| + | , nov_day_cnt AS ' | ||
| + | , dec_day_cnt AS ' | ||
| + | ) | ||
| + | ) | ||
| + | ; | ||
| </ | </ | ||
| ===== PostgreSQL ===== | ===== PostgreSQL ===== | ||
| <sxh sql; gutter: true;> | <sxh sql; gutter: true;> | ||
| - | -- FIXME | + | /* |
| + | PostgreSQL 7.1 이상 | ||
| + | */ | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , jan_day_cnt AS day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , feb_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , mar_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , apr_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , may_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , jun_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , jul_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , aug_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , sep_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , oct_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , nov_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | UNION ALL | ||
| + | SELECT | ||
| + | year | ||
| + | , ' | ||
| + | , dec_day_cnt | ||
| + | FROM | ||
| + | ex_unpivot | ||
| + | ; | ||
| </ | </ | ||
| + | |||
| + | {{tag>" | ||