【问题标题】:Concatenate multiple rows to one row [duplicate]将多行连接到一行[重复]
【发布时间】:2019-11-07 12:16:34
【问题描述】:

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

我需要输出为 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

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

【问题讨论】:

  • 向我们展示一些示例表数据和预期结果 - 作为格式化文本(不是图像)。
  • 您使用的是哪个 dbms?
  • 这里的大多数人想要格式化文本,而不是图像链接。也看看minimal reproducible example
  • 尝试了解降价的工作原理,例如here。这种语言用于在 stackoverflow 上写帖子。
  • 请相应阅读sql tag infoedit的第一段您的问题。

标签: sql sql-server string-aggregation


【解决方案1】:

如果您使用的是 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 ('')

【讨论】:

  • 非常感谢您的努力。我正在使用 Microsoft SQL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-12
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多