获取所有列名称并将它们提取到一行中
Get all of the columns name and fetch them into one row
所以,我知道我可以 select 查询的列名称:
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 11.2.0.4.0 版
你可以使用listagg
select listagg(column_name, ',' ) within group (order by column_name) as "columns"
from all_tab_columns
where table_name = 'MY_TABLE_NAME';
这会起作用:
select listagg(col_name, ',') WITHIN GROUP (ORDER BY col_name)from(SELECT column_name
FROM ALL_TAB_COLS WHERE table_name = 'MY_TABLE_NAME');
所以,我知道我可以 select 查询的列名称:
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 11.2.0.4.0 版
你可以使用listagg
select listagg(column_name, ',' ) within group (order by column_name) as "columns"
from all_tab_columns
where table_name = 'MY_TABLE_NAME';
这会起作用:
select listagg(col_name, ',') WITHIN GROUP (ORDER BY col_name)from(SELECT column_name
FROM ALL_TAB_COLS WHERE table_name = 'MY_TABLE_NAME');