【发布时间】:2020-04-05 09:07:47
【问题描述】:
我手头有一个非常特殊的问题。
简介:我在数据库中有两列需要“分组连接”,在 MySQL 中我只需使用 GROUP_CONCAT 即可获得所需的结果,在 SQL Server 2017 中我将使用 STRING_AGG,我遇到的问题是在 SQL Server 2012 中,它没有这个功能。
现在,在正常情况下,我会使用FOR XML PATH('') 来获取解决方案,这是不可行的,因为我在第三个源应用程序中从编辑器运行查询,我得到的错误是
FOR XML PATH('') 不能在游标内使用
为了论证的缘故,我们假设使用这个函数是完全没有问题的。
我尝试过使用递归 CTE,但是由于执行时间问题,它不可行,UNION ALL 占用太多资源并且无法正常执行(我正在使用数据进行报告)。
由于数据的敏感性,我不会发布数据的屏幕截图,想象一下只有两列,一列有一个 id(多个相同的 id),一列有需要连接的数据(一些字符串)。目标是将第一列中所有相同 id 的第二列连接起来,显然在此过程中使其不同。
示例: 输入:
col1 col2
1 a
1 b
2 a
3 c
输出:
col1 col2
1 a/b
2 a
3 c
有人对如何做到这一点有创意吗?
【问题讨论】:
-
你为什么要简要介绍你的问题,包括你的部分解决方案,这显然不是要走的路,因为你在这里问一个问题?请提供一些(假的?)样本数据和所需的输出。 (在文字中,而不是在图片中!)
-
我提供介绍是因为这是显而易见的答案,如果我没有提到它,我会得到它作为答案,如果我已经尝试过,没有理由污染帖子无效的答案。
-
你不能在应用程序中创建一个使用 FOR XML PATH 和从视图中选择的视图吗?
-
很遗憾无法访问数据库。我所拥有的只是查询数据库的在线“视图”。
标签: sql sql-server tsql string-aggregation