Преобразование строк в столбец в Oracle SQL

Привет, я хочу преобразовать столбец в строки. Кто-нибудь может сказать мне, как я могу это сделать.

Вход:-

id name
10 shruti
20 Wipro

Выход должен быть

id   10     20
name shruti wipro

Обратите внимание, что может быть n столбцов. Что было бы наиболее эффективным способом сделать это.

Для произвольного количества столбцов вам понадобится динамический SQL.

Tim Biegeleisen 25.06.2018 15:07

Вы можете использовать PIVOT. Ссылка: blogs.oracle.com/sql/…

Kinchit Dalwani 25.06.2018 15:17
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
2
56
1

Ответы 1

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()?

Gordon Linoff 25.06.2018 15:46

string_agg не нуждается в какой-либо группе для агрегирования внутри (в отличие от listagg), поэтому используется string_agg

kiran gadhe 25.06.2018 15:49

@kirangadhe string_agg не является процедурой, предоставляемой Oracle.

Boneist 25.06.2018 15:52

В ссылке четко указано, что это UDF. Вы должны указать это как определяемую пользователем функцию и добавить ссылку / код в свой ответ. .

Kaushik Nayak 25.06.2018 16:05

Другие вопросы по теме