У меня есть такая таблица:
ID CODE
----------------------
1111 HE
1111 HO
1111 FR
2222 CH
2222 AA
2222 LM
2222 BB
3333 HO
3333 FR
и я хочу вернуть 1 строку на идентификатор с 4 столбцами в строке
Я читал о динамическом SQL, но раньше им не пользовался. Поскольку количество столбцов определено, требуется ли динамический запрос? Будут ли динамические запросы работать в PL/SQL?
Ожидал:
ID CODE_1 CODE_2 CODE_3 CODE_4
--------------------------------------------------
1111 HE HO FR NULL
2222 CH AA LM BB
3333 HO FR NULL NULL


Если вам нужны именно 4 столбца, т.е. без динамически растущих или сокращающихся столбцов, вы можете сделать:
with
n as (
select
id,
code,
row_number() over(partition by id order by code) as rn
from t
)
select
n0.id,
n1.code as code_1,
n2.code as code_2,
n3.code as code_3,
n4.code as code_4
from n n0
left join n n1 on n1.id = n0.id and n1.rn = 1
left join n n2 on n2.id = n0.id and n2.rn = 2
left join n n3 on n3.id = n0.id and n3.rn = 3
left join n n4 on n4.id = n0.id and n4.rn = 4
group by id