Oracle11g 如何在oracle sql 11G中将列转换为行
我需要将下面的列转换为行Oracle11g 如何在oracle sql 11G中将列转换为行,oracle11g,oracle-sqldeveloper,Oracle11g,Oracle Sqldeveloper,我需要将下面的列转换为行 从table_name='table_name'所在的所有_选项卡中选择列_name' COLUMN_1 COLUMN_2 COLUMN_3 COLUMN_4 COLUMN_5 COLUMN_6 COLUMN_7 尝试使用pivot运算符/子句 如果表中包含的列数超过了在in子句中的pivot函数中无法提及的列数,我需要提及该表的所有列名 select * from ( select column_name from all_tab_cols
从table_name='table_name'所在的所有_选项卡中选择列_name'代码>
COLUMN_1
COLUMN_2
COLUMN_3
COLUMN_4
COLUMN_5
COLUMN_6
COLUMN_7
尝试使用pivot运算符/子句
如果表中包含的列数超过了在in子句中的pivot函数中无法提及的列数,我需要提及该表的所有列名
select * from
(
select column_name
from all_tab_cols
where table_name = 'TABLE_NAME'
)
pivot ( min(column_name) for column_name in
(
'COLUMN_1', 'COLUMN_2', 'COLUMN_3', 'COLUMN_4', 'COLUMN_5', 'COLUMN_6', 'COLUMN_7'
));
预期产出:
COLUMN_1 COLUMN_2 COLUMN_3 COLUMN_4 COLUMN_5 COLUMN_6 COLUMN_7
任何人都可以建议如何将列转换为行吗
select listagg(A,' ') within group (order by A) as Names
from test
在这种情况下,查询如下所示:
select listagg(column_name,' ') within group (order by column_name) as column_name
from all_tab_cols
where table_name='TABLE_NAME' ;
在谷歌搜索了这么久之后
我发现pivot查询没有任何动态特性
所以在我找到解决办法之后
这里下载pivot函数
运行此脚本,此脚本将自动创建pivot函数
使用此函数,我们可以从行创建动态列
示例:
select * from table( pivot( Q'$ select column_name,column_name name
from all_tab_cols where table_name = 'TABLE_NAME' $') )
我希望这会有所帮助。是否要创建透视列动态?无法在我的项目中使用此选项。无论如何,感谢及时的响应,没有发生任何错误?首先你需要运行,然后上面的查询是有用的。