Я пытаюсь преобразовать столбцы в строки, чтобы они были сгруппированы по номеру блока, который я надеялся создать в функции unpivot
Чтобы упростить объяснение, см. Пример запроса ниже: 1004 *
, который выводит пять столбцов:
student unit_1_date unit_1_subject unit_2_date unit_2_subject
123456789 01/Jul/2020 Mathematics 01/Aug/2020 English
I wi sh, чтобы развернуть эти столбцы, чтобы их можно было сгруппировать по номеру единицы и отобразить следующим образом:
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
Я не знаю, как go о группировании двух столбцов, чтобы они были сгруппированы по номеру единицы. Как лучше всего это сделать? Возможно ли это с помощью функции UNPIVOT?
Спасибо