使用 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中文网其他相关文章!