获取所有列的名称,并将其提取到一行

时间:2018-12-14 08:51:26

标签: sql oracle oracle11g columnname listagg

所以,我知道我可以通过查询选择列名称:

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数据库11g 11.2.0.4.0

2 个答案:

答案 0 :(得分:2)

您可以使用listagg

select listagg(column_name, ',' )  within group (order by column_name) as "columns"
  from all_tab_columns
 where table_name = 'MY_TABLE_NAME';

答案 1 :(得分:1)

这将起作用:

select listagg(col_name, ',') WITHIN GROUP (ORDER BY col_name)from(SELECT column_name  
FROM ALL_TAB_COLS WHERE table_name = 'MY_TABLE_NAME');