Получить все имена столбцов и вывести их в одну строку

Итак, я знаю, что могу выбрать имена COLUMN с запросом:

SELECT column_name FROM ALL_TAB_COLS WHERE table_name = 'MY_TABLE_NAME'

Он работает нормально, если я использую rownum = 1...

OUTPUT: sz.price

Я должен использовать его, потому что это запрос в EAS (программное обеспечение для предприятий). Если я его не использую -> subquery returns more than one row

Как я могу получить все имена столбцов, которые находятся в MY_TABLE_NAME, в одну строку?

expected OUTPUT: sz.price, sz.column2, sz.column3, ....

Версия: Oracle Database 11g Release 11.2.0.4.0


person Georgy    schedule 14.12.2018    source источник
comment
Возможный дубликат Oracle SQL Developer: как транспонировать строки в столбцы с помощью функции PIVOT   -  person Joakim Danielson    schedule 14.12.2018


Ответы (2)


вы можете использовать listagg

select listagg(column_name, ',' )  within group (order by column_name) as "columns"
  from all_tab_columns
 where table_name = 'MY_TABLE_NAME';
person Barbaros Özhan    schedule 14.12.2018
comment
изначально вы отсутствовали, где условие! - person nikhil sugandh; 14.12.2018
comment
@nikhilsugandh да, быстро и утомительно :) - person Barbaros Özhan; 14.12.2018

это будет работать:

select listagg(col_name, ',') WITHIN GROUP (ORDER BY col_name)from(SELECT column_name  
FROM ALL_TAB_COLS WHERE table_name = 'MY_TABLE_NAME');
person nikhil sugandh    schedule 14.12.2018
comment
Подзапрос не нужен - person Kaushik Nayak; 14.12.2018