连接一行

时间:2016-11-28 18:16:24

标签: sql

嗨我需要从表中连接所有行。 我有这个查询select * from table1;这个表包含400个字段 我不能这样做select column1 ||','||column2||','||.....from table1 有人可以帮助e使用select * from table1来修复它来连接所有行。 谢谢你。

1 个答案:

答案 0 :(得分:-1)

在Oracle(和其他DBMS中的类似)中,您可以使用系统表....并分两步完成:

假设您想将所有列组合成X行的1列......

第1步:

SELECT LISTAGG(column_Name, '|| Chr(44)||')   --this char(44) adds a comma
           within group (order by column_ID)  as Fields
            --Order by column_Id ensures they are in the same order as defined in db.
FROM all_tab_Cols 
WHERE table_name = 'YOURTABLE' 
  and owner = 'YOUROWNER'
--Perhaps exclude system columns  
  and Virtual_Column = 'NO'

第2步:

将结果复制到新的SQL语句中并执行。 看起来像Field1|| Chr(44)||Field2|| Chr(44)||Field3

SELECT <results> 
FROM YOURTABLE;

这将导致{1}}的所有行的1列中以逗号分隔的值列表

如果所有列的长度(以及空格和||)超过允许的4000个字符......我们可以通过使用XML对象来使用clob数据类型......

*将步骤1替换为*

YOURTABLE

上述语法归因于This Oracle thread,但根据您的需要进行了更新。