将多行中的文本合并为一行(作为逗号分隔的字符串)

Posted

技术标签:

【中文标题】将多行中的文本合并为一行(作为逗号分隔的字符串)【英文标题】:Combine text from multiple rows into a single row (as a comma separated string) 【发布时间】:2015-06-23 01:04:23 【问题描述】:

我正在尝试完成此处已回答的相同事情:SQL combining data from two rows into a single row when they share a common identifier 仅在 MS Access 中。

数据如下所示:

ArticleID     CategoryName
1             Alpha
1             Beta
2             Beta
2             Gamma
3             Alpha
3             Delta

我希望结果如下所示:

ArticleID     Categories
1             Alpha, Beta
2             Beta, Gamma
3             Alpha, Delta

【问题讨论】:

一般/通用术语是“组连接”。实现这一目标的方式差异很大.. 不知道 Access 如何/是否允许。 您需要使用 VBA,它在 MS Access 前端之外不可用。这是一个例子***.com/questions/92698/combine-rows-concatenate-rows/…,还有其他的。 【参考方案1】:

简短的回答是否定的。 MS Access Jet SQL 中不提供在其他 DMBS 中很好地实现这一点的方法。您需要解决这个 Access VBA 编程问题,而不是 SQL 问题。是的,性能会比使用 SQL 解决方案差得多。如果您在谷歌上搜索 VBA 解决方案,那么有些人之前已经尝试过。就个人而言,我会严重质疑您的报告需要多么强烈地要求这一要求。如果您在 SQL 中生成分组报告,您可以在更多选项卡格式下为最终用户列出结果,效果类似:

1
    Alpha
    Beta
2
    Beta
    Gamma
3
    Alpha
    Delta

【讨论】:

同意。删除规范化似乎并不明智。 我理解保持正常化的愿望。就我而言,我从通用 CMS 收到了几个 CSV 文件,我正在将它们导入 WordPress。我没有直接访问数据库的权限,所以我必须使用插件来获取系统中的帖子。

以上是关于将多行中的文本合并为一行(作为逗号分隔的字符串)的主要内容,如果未能解决你的问题,请参考以下文章

使用逗号分隔符将单个 CSV 列批量转换为多个

逗号分隔的文本文件到通用列表

使用 SQL Server 将逗号分隔的文本转换为多列结果

如何根据一个字段是不是包含oracle sql中的逗号分隔字符串将单行拆分为多行?

如何通过逗号分隔将 2 行合并为一行?

Linux下使用xargs将多行文本转换成一行并用tr实现逗号隔开