문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
기술문서:레퍼런스:쿼리:응용:pivot_query [2025/01/23 12:19] carlito76 ↷ 문서가 기술문서:레퍼런스:자료:프로토콜에서 기술문서:레퍼런스:쿼리:pivot(으)로 이동되고 이름이 바뀌었습니다 |
기술문서:레퍼런스:쿼리:응용:pivot_query [2026/01/16 16:19] (현재) carlito76 |
||
|---|---|---|---|
| 줄 1: | 줄 1: | ||
| - | ====== 프로토콜 ====== | + | {{htmlmetatags> |
| + | metatag-description=(피벗 쿼리, Pivot Query, 피벗, Pivot, 데이터베이스, | ||
| + | metatag-og: | ||
| + | }} | ||
| - | FIXME | + | ====== Pivot Query ====== |
| + | |||
| + | <note tip> | ||
| + | 최소 지원 버전은 약간의 차이가 있을 수 있습니다. | ||
| + | </ | ||
| + | |||
| + | ===== 테이블 명세 ===== | ||
| + | ^ 물리명 | ||
| + | | 년 | year | 문자형 | 100 | | ||
| + | | 월 | month | 문자형 | 100 | | ||
| + | | 일수 | day_cnt | 숫자형 | | | ||
| + | |||
| + | ===== SQL 스크립트 ===== | ||
| + | <sxh sql; gutter: true; title: DDL;> | ||
| + | CREATE TABLE ex_pivot ( | ||
| + | year VARCHAR(100) NOT NULL, | ||
| + | month VARCHAR(100) NOT NULL, | ||
| + | day_cnt INT NOT NULL | ||
| + | ); | ||
| + | </ | ||
| + | |||
| + | <sxh sql; gutter: true; title: DML;> | ||
| + | INSERT INTO ex_pivot (year, month, day_cnt) VALUES (' | ||
| + | INSERT INTO ex_pivot (year, month, day_cnt) VALUES (' | ||
| + | INSERT INTO ex_pivot (year, month, day_cnt) VALUES (' | ||
| + | INSERT INTO ex_pivot (year, month, day_cnt) VALUES (' | ||
| + | INSERT INTO ex_pivot (year, month, day_cnt) VALUES (' | ||
| + | INSERT INTO ex_pivot (year, month, day_cnt) VALUES (' | ||
| + | INSERT INTO ex_pivot (year, month, day_cnt) VALUES (' | ||
| + | INSERT INTO ex_pivot (year, month, day_cnt) VALUES (' | ||
| + | INSERT INTO ex_pivot (year, month, day_cnt) VALUES (' | ||
| + | INSERT INTO ex_pivot (year, month, day_cnt) VALUES (' | ||
| + | INSERT INTO ex_pivot (year, month, day_cnt) VALUES (' | ||
| + | INSERT INTO ex_pivot (year, month, day_cnt) VALUES (' | ||
| + | </ | ||
| + | |||
| + | ===== MySQL/ | ||
| + | <sxh sql; gutter: true;> | ||
| + | /* | ||
| + | MySQL 5.0.1 이상/ | ||
| + | */ | ||
| + | SELECT | ||
| + | year | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | FROM | ||
| + | ex_pivot | ||
| + | GROUP BY | ||
| + | year | ||
| + | ; | ||
| + | </ | ||
| + | |||
| + | ===== MSSQL ===== | ||
| + | <sxh sql; gutter: true;> | ||
| + | /* | ||
| + | MSSQL 2000 이상 | ||
| + | */ | ||
| + | SELECT | ||
| + | year | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | FROM | ||
| + | ex_pivot | ||
| + | GROUP BY | ||
| + | year | ||
| + | ; | ||
| + | |||
| + | /* | ||
| + | MSSQL 2005 이상 | ||
| + | */ | ||
| + | SELECT | ||
| + | year | ||
| + | , [jan] AS jan_day_cnt | ||
| + | , [feb] AS feb_day_cnt | ||
| + | , [mar] AS mar_day_cnt | ||
| + | , [apr] AS apr_day_cnt | ||
| + | , [may] AS may_day_cnt | ||
| + | , [jun] AS jun_day_cnt | ||
| + | , [jul] AS jul_day_cnt | ||
| + | , [aug] AS aug_day_cnt | ||
| + | , [sep] AS sep_day_cnt | ||
| + | , [oct] AS oct_day_cnt | ||
| + | , [nov] AS nov_day_cnt | ||
| + | , [dec] AS dec_day_cnt | ||
| + | FROM | ||
| + | (SELECT | ||
| + | year | ||
| + | , month | ||
| + | , day_cnt | ||
| + | FROM | ||
| + | ex_pivot | ||
| + | ) src | ||
| + | PIVOT ( | ||
| + | MAX(day_cnt) | ||
| + | FOR month IN ( | ||
| + | [jan] | ||
| + | , [feb] | ||
| + | , [mar] | ||
| + | , [apr] | ||
| + | , [may] | ||
| + | , [jun] | ||
| + | , [jul] | ||
| + | , [aug] | ||
| + | , [sep] | ||
| + | , [oct] | ||
| + | , [nov] | ||
| + | , [dec] | ||
| + | ) | ||
| + | ) pvt | ||
| + | ; | ||
| + | </ | ||
| + | |||
| + | ===== Oracle/ | ||
| + | <sxh sql; gutter: true;> | ||
| + | /* | ||
| + | Oracle 8i 이상/ | ||
| + | */ | ||
| + | SELECT | ||
| + | year | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | FROM | ||
| + | ex_pivot | ||
| + | GROUP BY | ||
| + | year | ||
| + | ; | ||
| + | |||
| + | /* | ||
| + | Oracle 11g 이상/ | ||
| + | */ | ||
| + | SELECT | ||
| + | * | ||
| + | FROM | ||
| + | (SELECT | ||
| + | year | ||
| + | , month | ||
| + | , day_cnt | ||
| + | FROM | ||
| + | ex_pivot | ||
| + | ) | ||
| + | PIVOT ( | ||
| + | MAX(day_cnt) | ||
| + | FOR month IN ( | ||
| + | ' | ||
| + | , ' | ||
| + | , ' | ||
| + | , ' | ||
| + | , ' | ||
| + | , ' | ||
| + | , ' | ||
| + | , ' | ||
| + | , ' | ||
| + | , ' | ||
| + | , ' | ||
| + | , ' | ||
| + | ) | ||
| + | ) | ||
| + | ; | ||
| + | </ | ||
| + | |||
| + | ===== PostgreSQL ===== | ||
| + | <sxh sql; gutter: true;> | ||
| + | /* | ||
| + | PostgreSQL 7.1 이상 | ||
| + | */ | ||
| + | SELECT | ||
| + | year | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | , MAX(CASE WHEN month = ' | ||
| + | FROM | ||
| + | ex_pivot | ||
| + | GROUP BY | ||
| + | year | ||
| + | ; | ||
| + | </ | ||
| + | |||
| + | {{tag>" | ||