首页 > 数据库 > mysql教程 > 如何在 SQL Server 中使用 GROUP BY 连接字符串?

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

Susan Sarandon
发布: 2025-01-25 02:15:12
原创
450 人浏览过

How to Concatenate Strings Using GROUP BY in SQL Server?

使用 SQL Server 中的 GROUP BY 语句连接字符串

在许多数据分析场景中,需要将按公共标识符分组的多个行的字符串连接起来。这允许您有效地汇总和操作数据以用于报告目的。

在 SQL Server 中实现此目的,您可以利用强大的 GROUP BY 子句以及对 FOR XML 和 PATH 函数的巧妙使用。这种方法提供了一种高效且直接的解决方案,无需使用游标、循环或用户定义函数。

考虑以下示例数据:

<code>id       Name       Value
1          A          4
1          B          8
2          C          9</code>
登录后复制

您的目标是将此数据转换为以下输出:

<code>id          Column
1          A:4, B:8
2          C:9</code>
登录后复制

要完成此任务,您可以使用以下 SQL 查询:

<code class="language-sql">CREATE TABLE #YourTable ([ID] INT, [Name] CHAR(1), [Value] INT)

INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (1,'A',4)
INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (1,'B',8)
INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (2,'C',9)

SELECT 
  [ID],
  STRING_AGG([Name] + ':' + CAST([Value] AS VARCHAR(MAX)), ', ') AS NameValues
FROM #YourTable 
GROUP BY ID

DROP TABLE #YourTable</code>
登录后复制

让我们分解一下查询:

  • STRING_AGG 函数将每个组内的字符串连接成逗号分隔的列表。 这提供了比旧方法更简洁、更易读的解决方案。

此 SQL 查询有效地按 ID 列对数据进行分组,并连接每个组内每一行的 Name 和 Value 列,从而得到所需的输出。 使用 STRING_AGG 简化了代码,使其更易于理解和维护。 对于 SQL Server 2017 及更高版本,强烈推荐使用此方法。

以上是如何在 SQL Server 中使用 GROUP BY 连接字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板