首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在SQL Server中使用GROUP BY连接字符串?

如何在SQL Server中使用GROUP BY连接字符串?
EN

Stack Overflow用户
提问于 2008-11-07 19:08:01
回答 20查看 685.8K关注 0票数 441

如何获取:

代码语言:javascript
复制
id       Name       Value
1          A          4
1          B          8
2          C          9

代码语言:javascript
复制
id          Column
1          A:4, B:8
2          C:9
EN

回答 20

Stack Overflow用户

发布于 2017-04-28 01:32:29

如果是SQL Server 2017或SQL Server Vnext,SQL Azure,您可以使用string_agg,如下所示:

代码语言:javascript
复制
select id, string_agg(concat(name, ':', [value]), ', ')
from #YourTable 
group by id
票数 220
EN

Stack Overflow用户

发布于 2011-12-07 01:58:00

使用XML路径不会像您预期的那样完美地连接在一起...它会将"&“替换为"&”,还会与<" and "> ...maybe打乱一些其他东西,而不是sure...but你可以尝试这样做

我遇到了一种变通方法...您需要替换:

代码语言:javascript
复制
FOR XML PATH('')
)

通过以下方式:

代码语言:javascript
复制
FOR XML PATH(''),TYPE
).value('(./text())[1]','VARCHAR(MAX)')

如果您正在使用...or NVARCHAR(MAX),请执行以下操作。

为什么见鬼的SQL没有连接聚合函数?这是皮塔饼。

票数 54
EN

Stack Overflow用户

发布于 2011-10-18 18:48:45

当我尝试将Kevin Fairchild的建议转换为使用包含空格和编码的特殊XML字符(&<>)的字符串时,我遇到了一些问题。

我的代码的最终版本(它没有回答最初的问题,但可能对某些人有用)如下所示:

代码语言:javascript
复制
CREATE TABLE #YourTable ([ID] INT, [Name] VARCHAR(MAX), [Value] INT)

INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (1,'Oranges & Lemons',4)
INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (1,'1 < 2',8)
INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (2,'C',9)

SELECT  [ID],
  STUFF((
    SELECT ', ' + CAST([Name] AS VARCHAR(MAX))
    FROM #YourTable WHERE (ID = Results.ID) 
    FOR XML PATH(''),TYPE 
     /* Use .value to uncomment XML entities e.g. &gt; &lt; etc*/
    ).value('.','VARCHAR(MAX)') 
  ,1,2,'') as NameValues
FROM    #YourTable Results
GROUP BY ID

DROP TABLE #YourTable

它不是使用空格作为分隔符并用逗号替换所有空格,而是在每个值前面加上逗号和空格,然后使用STUFF删除前两个字符。

通过使用TYPE指令,可以自动处理XML编码。

票数 44
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/273238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档