如何在 oracle sql 11G 中将列转置为行
How to transpose column into row in oracle sql 11G
我需要将下面的列转换为行
select column_name from all_tab_cols where table_name='TABLE_NAME' ;
COLUMN_1
COLUMN_2
COLUMN_3
COLUMN_4
COLUMN_5
COLUMN_6
COLUMN_7
尝试使用枢轴 operator/clause ,
我需要提及 table 的所有列名,如果 table 包含更多的列,则不可能在 in 子句的数据透视函数中提及,
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 查询没有任何动态特征
所以我在这里找到解决方案后
https://technology.amis.nl/2006/05/24/dynamic-sql-pivoting-stealing-antons-thunder/
这里从这里下载枢轴函数
http://paste.ubuntu.com/21378705/
运行这个脚本和这个脚本自动创建枢轴函数
使用此函数,我们可以从行创建动态列。
示例:
select * from table( pivot( Q'$ select column_name,column_name name
from all_tab_cols where table_name = 'TABLE_NAME' $') )
希望对您有所帮助。
我需要将下面的列转换为行
select column_name from all_tab_cols where table_name='TABLE_NAME' ;
COLUMN_1
COLUMN_2
COLUMN_3
COLUMN_4
COLUMN_5
COLUMN_6
COLUMN_7
尝试使用枢轴 operator/clause ,
我需要提及 table 的所有列名,如果 table 包含更多的列,则不可能在 in 子句的数据透视函数中提及,
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 查询没有任何动态特征
所以我在这里找到解决方案后
https://technology.amis.nl/2006/05/24/dynamic-sql-pivoting-stealing-antons-thunder/
这里从这里下载枢轴函数
http://paste.ubuntu.com/21378705/
运行这个脚本和这个脚本自动创建枢轴函数
使用此函数,我们可以从行创建动态列。
示例:
select * from table( pivot( Q'$ select column_name,column_name name
from all_tab_cols where table_name = 'TABLE_NAME' $') )
希望对您有所帮助。