SQL Server 中的连接组
如果我有一个像这样的表:
+------------+
| Id | Value |
+------------+
| 1 | 'A' |
|------------|
| 1 | 'B' |
|------------|
| 2 | 'C' |
+------------+
我怎样才能得到这样的结果集:
+------------+
| Id | Value |
+------------+
| 1 | 'AB' |
|------------|
| 2 | 'C' |
+------------+
我知道这在MySQL中使用GROUP_CONCAT确实很容易做到,但我需要能够在MSSQL 2005中做到这一点
谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
为了获得干净高效的解决方案,您可以创建用户定义的聚合函数 ,甚至还有一个示例可以满足您的需求。< br>
然后,您可以像任何其他聚合函数一样使用它(使用标准查询计划):
For a clean and efficient solution you can create an user defined aggregate function, there is even an example that does just what you need.
You can then use it like any other aggregate function (with a standard query plan):
这会做:
This will do:
请参阅:
http://blog.shlomoid.com/2008/ 11/emulate-mysqls-groupconcat-function.html
See:
http://blog.shlomoid.com/2008/11/emulating-mysqls-groupconcat-function.html
通常 在这里询问。
最有效的方法是使用 FOR XML PATH 技巧。
Often asked here.
The most efficient way is using the FOR XML PATH trick.
这只是我想到的一种可能的解决方案。 我不知道性能如何,但我认为这将是解决问题的一种有趣的方式。 我测试了它在简单情况下的工作原理(我没有编写代码来解释 NULL)。 请随意测试一下,看看它是否适合您。
我使用的表包含一个 id (my_id)。 这实际上可以是组内唯一的任何列 (grp_id),因此它可以是日期列或其他列。
This just came to me as one possible solution. I have no idea as to performance, but I thought it would be an interesting way to solve the problem. I tested that it works in a simple situation (I didn't code to account for NULLs). Feel free to give it a test to see if it performs well for you.
The table that I used included an id (my_id). That could really be any column that is unique within the group (grp_id), so it could be a date column or whatever.