嗨,我需要连接我的表中的所有行。 我有这个查询select * from table1;
这个表包含400个字段 我不能这样做select column1 ||','||column2||','||.....from table1
有人可以帮助e修复它使用select * from table1来协调所有行。 谢谢。在一行中连接所有行
回答
在Oracle(和其他类似数据库管理系统),你可以使用系统表....做这两个步骤:
假设你想要的所有列合并成1列X行...
步骤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列的YOURTABLE
所有行如果所有列(与空间和沿长度| |)将超过允许的4000个字符...我们可以通过,而不是使用XML对象使用CLOB数据类型...
*更换步骤1中带*号
SELECT RTRIM(XMLAGG(XMLELEMENT(Column_ID,Column_Name,'|| Chr(44)||').extract('//text()') order by Column_ID).GetClobVal(),'|| Chr(44)||') fields
FROM all_tab_Cols
WHERE table_name = 'YOURTABLENAME'
and owner = 'YOUROWNER'
--Perhaps exclude system columns
and Virtual_Column = 'NO';
上述归因于This Oracle thread的语法,但更新了您的需要。
问题我有一个400列有这样的东西SELECT LISTAGG(*,'||,||')? – razzek
你试过了吗?第1步从指定的table.schema中选择所有非虚拟列。步骤2然后选择全部400列并合并它们。您只需将YOURTABLE和YOUROWNER更改为架构并对其进行表格运行,然后将结果粘贴到第2步查询中,并用您复制的内容替换
还是你得到一个字符串concat太长的错误? ORA-01489:字符串连接的结果太长 01489. 00000 - “字符串连接的结果太长” *原因:字符串连接结果大于最大大小。 *操作:确保结果小于最大尺寸.' – xQbert
- 1. 用连接加总所有行
- 2. 全外连接不返回所有行?
- 3. Oracle左连接不返回所有行
- 4. 如何在python中将文本文件中的所有行连接在一起?
- 5. 左连接不返回在MySQL中的所有行
- 6. 所有连接正在使用中:执行停止
- 7. SQL - 为一个表中的值标识行,其中所有连接的行只有一个特定的值
- 8. 如何在anoter表中连接一行与另一行
- 9. 从连接表中的条件中选择一个表中的所有行
- 10. 在MySQL中单行连接多行
- 11. 是否有可能在dplyr中进行完全连接并保留连接中使用的所有列?
- 12. 如何在所有Zookeeper连接上强制执行SASL
- 13. Docker,连接拒绝其他所有正在运行的服务
- 14. JPQL左连接 - 在返回所有左行时过滤右列
- 15. 在所有连接的设备上运行多个adb安装
- 16. 左连接不返回左表中的所有行
- 17. OleDb连接不读取excel文件中的所有行
- 18. 将SQL连接成一行
- 19. 将多行连接成一行
- 20. Mysql在一行中选取/连接多行
- 21. 在另一个表中连接3行到1行在另一个表中
- 22. flask.session在所有连接中共享
- 23. 连接后连接行值
- 24. 从表中选择所有行和链接表中的所有相关行
- 25. Do views只执行他们需要的连接,或者所有连接总是?
- 26. 连接列和行在一起
- 27. 在一列连接多个行
- 28. 连接数据表中的一行
- 29. Makefile中没有运行臂无 - EABI-AR没有连接所有.o文件
- 30. 左连接选择最后一行和左连接选择一行作为列
请标记您的dbms。 –
这看起来像甲骨文呢?并且它似乎并不像你在拼接行......它好像你想组合列返回1列多行?如果情况并非如此,请发布样本数据和预期结果。 – xQbert
如果使用db2或oracle查看LISTAGG()函数。 – Hogan