我需要将多个列(有相当多的列和行)合并到一个新的列中。
例如,缩短测试表
Col1 Col2 Col3 Col4 Col5 Col6
942 72987 14759 441277503 73553030 null
943 72987 14759 441278315 73553166 null
944 72987 14759 441362593 73570082 null
945 72987 14759 441380217 73572619 null
946 72987 14759 441394189 73574533 null
947 72987 14759 441394189 73574533 null
我想用逗号分隔符(“,”)合并col1-col5,并将创建的字符串放入col6
所以在第六节课我想要例如: 942,72987,14759,441277503,73553030
有什么解决方案吗?如何在sql/pl/sql中实现它?正如我所说的,有很多列,所以我希望避免使用 Col1 || Col2 || Col3 || Col4 || Col5
事先谢谢你,米莎ł
3条答案
按热度按时间2lpgd9681#
你可以用
trim()
使用一些条件逻辑:e5njpo682#
请按以下方式尝试pl/sql块:
zu0ti5jz3#
我会按照@apc的路线使用
USER_TAB_COLUMNS
要生成必要的sql:现在可以将它们与listag连接起来:
现在我将这个复制并粘贴到相应的查询f.i。
要连接这些列,需要将它们转换为varchar2。oracle尝试自动数据类型转换。你必须检查这是否有效,是否对你足够好。数字可能有前导空格、逗号或小数点、日期可能需要格式字符串等。
你可以这样想:
根据您的情况,您可以使用虚拟列而不是复制真实数据: