잡동사니

반응형

질문

unpivot 함수에서 구성하려는 단위 번호로 그룹화되도록 열을 행으로 피벗 해제하려고합니다.

설명을 단순화하려면 아래 쿼리 예를 참조하십시오.

select
'123456789' student
,'01/Jul/2020' unit_1_date
,'Mathematics 'unit_1_subject
,'01/Aug/2020' unit_2_date
,'English 'unit_2_subject
from
dual

5 개의 열을 출력합니다.

student     unit_1_date   unit_1_subject   unit_2_date    unit_2_subject
123456789   01/Jul/2020   Mathematics      01/Aug/2020    English

단위 번호별로 그룹화하고 다음과 같이 표시 할 수 있도록이 열의 피벗을 해제하고 싶습니다.

student     unit_number     unit_date      unit_subject   
123456789   1               01/Jul/2020    Mathematics      
123456789   2               01/Aug/2020    English

나는 아래와 같이 unpivot 기능으로 이것을 시도했습니다.

select * from
(select
'123456789' student
,'01/Jul/2020' unit_1_date
,'Mathematics 'unit_1_subject
,'01/Aug/2020' unit_2_date
,'English 'unit_2_subject
from
dual) units
unpivot(unit_date for unit_number in(
unit_1_subject as '1',
unit_1_date    as '1',
unit_2_subject as '2',
unit_2_date    as '2'
))

다음과 같은 날짜를 출력합니다.

Student     Unit number    Unit_date 
123456789   1              Mathematics 
123456789   1              01/Jul/2020
123456789   2              English 
123456789   2              01/Aug/2020

두 개의 열을 그룹화하여 단위 번호로 그룹화하는 방법을 잘 모르겠습니다. 이를 수행하는 가장 좋은 방법은 무엇입니까? UNPIVOT 기능으로 가능합니까?

감사


답변1

다음과 같이 계층 쿼리를 사용할 수 있습니다.

SQL> SELECT
  2      STUDENT,
  3      LEVEL AS UNIT,
  4      CASE WHEN LEVEL = 1 THEN UNIT_1_DATE ELSE UNIT_2_DATE END AS UNIT_DATE,
  5      CASE WHEN LEVEL = 1 THEN UNIT_1_SUBJECT ELSE UNIT_2_SUBJECT END AS SUBJECT
  6  FROM
  7      ( SELECT
  8              '123456789' STUDENT,
  9              '01/Jul/2020' UNIT_1_DATE,
 10              'Mathematics ' UNIT_1_SUBJECT,
 11              '01/Aug/2020' UNIT_2_DATE,
 12              'English ' UNIT_2_SUBJECT
 13          FROM DUAL
 14      ) CONNECT BY LEVEL <= 2;

STUDENT         UNIT UNIT_DATE   SUBJECT
--------- ---------- ----------- ------------
123456789          1 01/Jul/2020 Mathematics
123456789          2 01/Aug/2020 English

SQL>


답변2

모두 통합 을 사용할 수 있습니다.

select 
    student,
    1 unit_number,
    unit_1_date unit_date,
    unit_1_date,
    unit_1_subject
from mytable
union all
select 
    student,
    2 unit_number,
    unit_2_date unit_date,
    unit_2_date,
    unit_2_subject
from mytable


 

 

 

 

출처 : https://stackoverflow.com/questions/62065040/oracle-unpivot-grouping

반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band