将多个 SQL Server 行组合成一个逗号分隔的列
本指南演示了如何在 SQL Server 中将多行合并为具有逗号分隔值的单列。 让我们使用这个示例数据集:
<code class="language-sql">[TicketID], [Person] T0001 Alice T0001 Bob T0002 Catherine T0002 Doug T0003 Elaine</code>
我们的目标是实现这个输出:
<code class="language-sql">[TicketID], [People] T0001 Alice, Bob T0002 Catherine, Doug T0003 Elaine</code>
解决方案(SQL Server 2005 及更高版本):
以下 SQL 查询利用 STUFF
函数有效地连接值:
<code class="language-sql">SELECT t.TicketID, STUFF(ISNULL((SELECT ', ' + x.Person FROM @Tickets x WHERE x.TicketID = t.TicketID GROUP BY x.Person FOR XML PATH (''), TYPE).value('.','VARCHAR(max)'), ''), 1, 2, '') AS People FROM @Tickets t GROUP BY t.TicketID;</code>
说明:
STUFF
函数用另一个字符串替换字符串的一部分。 在这里,它删除了前导逗号。FOR XML PATH
子句构造数据的 XML 表示形式,然后使用 .value('.','VARCHAR(max)')
将其转换为逗号分隔的字符串。 这是 SQL Server 中字符串聚合的常用技术。ISNULL
处理 TicketID
只有一个关联人的情况,以防止错误。此方法提供了一种简洁有效的解决方案,用于在 SQL Server 中将多行连接到单个逗号分隔列中。 请记住将 @Tickets
替换为您的实际表名称。
以上是如何在 SQL Server 中将多行连接成单个逗号分隔列?的详细内容。更多信息请关注PHP中文网其他相关文章!