Привет, я хочу преобразовать столбец в строки. Кто-нибудь может сказать мне, как я могу это сделать.
Вход:-
id name
10 shruti
20 Wipro
Выход должен быть
id 10 20
name shruti wipro
Обратите внимание, что может быть n столбцов. Что было бы наиболее эффективным способом сделать это.
Вы можете использовать PIVOT. Ссылка: blogs.oracle.com/sql/…


declare
sqlqry clob;
cols clob;
begin
select String_agg('''' || id || ''' as "' || id || '"', ',')
into cols
from (select distinct id from your_table);
sqlqry :=
'
select * from
(
select *
from your_table
)
pivot
(
max(name) for id in (' || cols || ')
)';
execute immediate sqlqry;
end;
/
Почему вы используете string_agg() вместо listagg()?
string_agg не нуждается в какой-либо группе для агрегирования внутри (в отличие от listagg), поэтому используется string_agg
@kirangadhe string_agg не является процедурой, предоставляемой Oracle.
В ссылке четко указано, что это UDF. Вы должны указать это как определяемую пользователем функцию и добавить ссылку / код в свой ответ. .
Для произвольного количества столбцов вам понадобится динамический SQL.