嗨我需要从表中连接所有行。
我有这个查询select * from table1;
这个表包含400个字段
我不能这样做select column1 ||','||column2||','||.....from table1
有人可以帮助e使用select * from table1来修复它来连接所有行。
谢谢你。
答案 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,但根据您的需要进行了更新。