首页 > 解决方案 > 将多行连接到一行

问题描述

我有以下数据,我必须连接长文本列并将其作为单行。挑战部分只有一行有通知号,其他行为空。您不能按通知编号分组。

在此处输入图像描述

我需要输出为 2 行

row number  Notification Number Plant   Creation Date   Language    Lineno  Tag Long Text
1           10014354914         A057    43466            EN            1     >X  aaabbbcccdddeeefffggghhhjjjkkklll
2           10014354915         A057    43466            EN            1     >X  aaabbbcccdddeeefffgggpppqqqrrrsss

我为此使用了游标。但这需要很多时间。

标签: sqlsql-serverstring-aggregation

解决方案


如果您使用的是 oracle:

with data("row number", "Notification Number","Plant","Creation Date","Language","Lineno","Tag","Long Text") as (
select 1,10014354914,'A057',43466,'EN',1,'>X','aaabbbcccdddeeefffggghhhjjjkkklll' from dual
union all
select 2,10014354915,'A057',43466,'EN',1,'>X','aaabbbcccdddeeefffgggpppqqqrrrsss' from dual)
select LISTAGG("Long Text",'') within group (order by "row number") from data;

如果您使用的是 ms-sql,可以试试这个:

SELECT u.[Long Text]  AS [text()]
            FROM yourtable u
            ORDER BY u.[row number]
            FOR XML PATH ('')

推荐阅读