在 SQL Server 中使用 GROUP BY 连接字符串
在 SQL Server 中处理字符串连接时,GROUP BY
子句是一个强大的工具。通过基于公共字段对行进行分组,您可以有效地将相关的字符串组合成单个连接结果。
让我们来看一个场景:
您有一个表,包含 ID、Name 和 Value 列。您希望将所有具有相同 ID 的行连接到单行中,该行包含名为 Column 的列,其中包含格式为 Name:Value 的连接字符串。
为此,您可以结合使用 FOR XML
和 PATH
与 GROUP BY
子句:
<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], STUFF(( SELECT ', ' + [Name] + ':' + CAST([Value] AS VARCHAR(MAX)) FROM #YourTable WHERE (ID = Results.ID) FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)') ,1,2,'') AS NameValues FROM #YourTable Results GROUP BY ID DROP TABLE #YourTable</code>
在这个查询中:
FOR XML PATH('')
创建 Name 和 Value 列的 XML 表示形式,用逗号分隔。PATH('')
子句指定连接的字符串应被视为单个值。STUFF
函数删除连接字符串开头的逗号和空格。GROUP BY
子句按 ID 分组结果。结果,您将获得以下输出:
<code>ID NameValues 1 A:4, B:8 2 C:9</code>
以上是如何使用组中的SQL Server中的串联字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!