사용자 도구

사이트 도구


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

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
기술문서:레퍼런스:쿼리:응용:unpivot_query [2025/07/30 12:12]
carlito76
기술문서:레퍼런스:쿼리:응용:unpivot_query [2025/11/27 12:07] (현재)
carlito76
줄 10: 줄 10:
 </note> </note>
  
-^  물리명  ^  논리명  ^  타입 +===== 테이블 명세 ===== 
-| 년 | year | 문자형 | +^  물리명  ^  논리명  ^  타입   길이  ^ 
-| 1월 일수 | jan_day_cnt | 숫자형 | +| 년 | year | 문자형 | 100 
-| 2월 일수 | feb_day_cnt | 숫자형 | +| 1월 일수 | jan_day_cnt | 숫자형 
-| 3월 일수 | mar_day_cnt | 숫자형 | +| 2월 일수 | feb_day_cnt | 숫자형 
-| 4월 일수 | apr_day_cnt | 숫자형 | +| 3월 일수 | mar_day_cnt | 숫자형 
-| 5월 일수 | may_day_cnt | 숫자형 | +| 4월 일수 | apr_day_cnt | 숫자형 
-| 6월 일수 | jun_day_cnt | 숫자형 | +| 5월 일수 | may_day_cnt | 숫자형 
-| 7월 일수 | jul_day_cnt | 숫자형 | +| 6월 일수 | jun_day_cnt | 숫자형 
-| 8월 일수 | aug_day_cnt | 숫자형 | +| 7월 일수 | jul_day_cnt | 숫자형 
-| 9월 일수 | sep_day_cnt | 숫자형 | +| 8월 일수 | aug_day_cnt | 숫자형 
-| 10월 일수 | oct_day_cnt | 숫자형 | +| 9월 일수 | sep_day_cnt | 숫자형 
-| 11월 일수 | nov_day_cnt | 숫자형 | +| 10월 일수 | oct_day_cnt | 숫자형 
-| 12월 일수 | dec_day_cnt | 숫자형 |+| 11월 일수 | nov_day_cnt | 숫자형 
 +| 12월 일수 | dec_day_cnt | 숫자형 |
  
 +===== SQL 스크립트 =====
 <sxh sql; gutter: true; title: DDL;> <sxh sql; gutter: true; title: DDL;>
 CREATE TABLE ex_unpivot ( CREATE TABLE ex_unpivot (
줄 46: 줄 48:
 INSERT INTO ex_unpivot ( INSERT INTO ex_unpivot (
  year  year
- , jan_day_cnt + , jan_day_cnt, feb_day_cnt, mar_day_cnt 
- , feb_day_cnt + , apr_day_cnt, may_day_cnt, jun_day_cnt 
- , mar_day_cnt + , jul_day_cnt, aug_day_cnt, sep_day_cnt 
- , apr_day_cnt + , oct_day_cnt, nov_day_cnt, dec_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 ( ) VALUES (
  '2025'  '2025'
- , 31 + , 31, 28, 31 
- , 28 + , 30, 31, 30 
- , 31 + , 31, 31, 30 
- , 30 + , 31, 30, 31
- , 31 +
- , 30 +
- , 31 +
- , 31 +
- , 30 +
- , 31 +
- , 30 +
- , 31+
 ); );
 </sxh> </sxh>
줄 77: 줄 63:
 ===== MySQL/MariaDB ===== ===== MySQL/MariaDB =====
 <sxh sql; gutter: true;> <sxh sql; gutter: true;>
--- MySQL 4.0 이상/MariaDB 5.1 이상+/* 
 + MySQL 4.0 이상/MariaDB 5.1 이상 
 +*/
 SELECT SELECT
  year  year
줄 166: 줄 154:
 ===== MSSQL ===== ===== MSSQL =====
 <sxh sql; gutter: true;> <sxh sql; gutter: true;>
--- MSSQL 2005 이상+/* 
 + MSSQL 2000 이상 
 +*/
 SELECT SELECT
  year  year
줄 250: 줄 240:
 FROM FROM
  ex_unpivot  ex_unpivot
 +;
 +
 +/*
 + MSSQL 2005 이상
 +*/
 +SELECT
 + year
 + , REPLACE(month, '_day_cnt', '') AS 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
 ; ;
 </sxh> </sxh>
줄 255: 줄 288:
 ===== Oracle/Tibero ===== ===== Oracle/Tibero =====
 <sxh sql; gutter: true;> <sxh sql; gutter: true;>
--- Oracle 9i 이상/Tibero 4 이상+/* 
 + Oracle 9i 이상/Tibero 4 이상 
 +*/
 SELECT SELECT
  year  year
줄 339: 줄 374:
 FROM FROM
  ex_unpivot  ex_unpivot
 +;
 +
 +/*
 + Oracle 11g 이상/Tibero 6 이상
 +*/
 +SELECT
 + year
 + , month
 + , day_cnt
 +FROM
 + ex_unpivot
 +UNPIVOT (
 + day_cnt FOR month IN (
 + jan_day_cnt AS 'jan'
 + , feb_day_cnt AS 'feb'
 + , mar_day_cnt AS 'mar'
 + , apr_day_cnt AS 'apr'
 + , may_day_cnt AS 'may'
 + , jun_day_cnt AS 'jun'
 + , jul_day_cnt AS 'jul'
 + , aug_day_cnt AS 'aug'
 + , sep_day_cnt AS 'sep'
 + , oct_day_cnt AS 'oct'
 + , nov_day_cnt AS 'nov'
 + , dec_day_cnt AS 'dec'
 + )
 +)
 ; ;
 </sxh> </sxh>
줄 344: 줄 406:
 ===== PostgreSQL ===== ===== PostgreSQL =====
 <sxh sql; gutter: true;> <sxh sql; gutter: true;>
--- PostgreSQL 7.1 이상+/* 
 + PostgreSQL 7.1 이상 
 +*/
 SELECT SELECT
  year  year
줄 430: 줄 494:
 ; ;
 </sxh> </sxh>
 +
 +{{tag>"쿼리" "Query" "응용"}}