Вам может понадобиться:
-- test case
with yourQuery (POSITION_CODE, NAME) as (
select 'ABCD', 'Grade01' from dual union all
select 'ABCD', 'Grade02' from dual union all
select 'ABCD', 'Grade03' from dual
)
-- query
select *
from yourQuery
pivot ( max (Name) for name in
(
'Grade01' as Grade1,
'Grade02' as Grade2,
'Grade03' as Grade3
)
)
, что дает:
POSITION_CODE GRADE1 GRADE2 GRADE3
------------- ------- ------- -------
ABCD Grade01 Grade02 Grade03
Если вам нужно обработать еще несколько столбцов, вам нужно отредактировать код, потому что вам нужно заранее знать количество и имя столбцов вашего набора результатов:
-- test case
with yourQuery (POSITION_CODE, NAME) as (
select 'ABCD', 'Grade01' from dual union all
select 'ABCD', 'Grade02' from dual union all
select 'ABCD', 'Grade03' from dual union all
select 'ABCD', 'Grade04' from dual
)
-- query
select *
from yourQuery
pivot ( max (Name) for name in
(
'Grade01' as Grade1,
'Grade02' as Grade2,
'Grade03' as Grade3,
'Grade04' as Grade4
)
)
таким образом получая:
POSITION_CODE GRADE1 GRADE2 GRADE3 GRADE4
------------- ------- ------- ------- -------
ABCD Grade01 Grade02 Grade03 Grade04