SQL Server中的Concat组

Dan*_*ore 10 sql sql-server group-by string-concatenation

如果我有这样的表格:

+------------+
| Id | Value |
+------------+
| 1  | 'A'   |
|------------|
| 1  | 'B'   |
|------------|
| 2  | 'C'   |
+------------+
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得这样的结果集:

+------------+
| Id | Value |
+------------+
| 1  | 'AB'  |
|------------|
| 2  | 'C'   |
+------------+
Run Code Online (Sandbox Code Playgroud)

我知道使用GROUP_CONCAT在MySQL中很容易做到,但我需要能够在MSSQL 2005中做到这一点

谢谢

(重复如何使用GROUP BY来连接SQL Server中的字符串?)

Pen*_*puu 10

要获得干净,高效的解决方案,您可以创建用户定义的聚合函数,甚至还有一个示例可以满足您的需求.
然后,您可以像使用任何其他聚合函数一样使用它(使用标准查询计划):

查询计划


Aar*_*ton 5

这样做:

SELECT mt.ID,
       SUBSTRING((SELECT mt2.Value
                  FROM   MyTable AS mt2
                  WHERE  mt2.ID = mt.ID
                  ORDER BY mt2.VALUE
                  FOR XML PATH('')), 3, 2000) AS JoinedValue
FROM   MyTable AS mt
Run Code Online (Sandbox Code Playgroud)

  • 不,它使用XML函数.没有涉及XML文档.为什么它"不受欢迎"? (4认同)