首页 > 数据库 > mysql教程 > 如何在 SQL Server 和 Oracle 中将多行连接成单个逗号分隔列?

如何在 SQL Server 和 Oracle 中将多行连接成单个逗号分隔列?

Patricia Arquette
发布: 2025-01-21 06:46:09
原创
845 人浏览过

How to Concatenate Multiple Rows into a Single Comma-Delimited Column in SQL Server and Oracle?

将多行组合成单个逗号分隔列(SQL Server 和 Oracle)

本指南演示如何基于共享字段(例如 TicketID)合并多行,并将其相应的值(例如 Person)连接到单个逗号分隔列(例如 People)。 我们将探索适用于 SQL Server 和 Oracle 的解决方案。

SQL Server 解决方案

SQL Server 利用 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, ''
        ) [No Preceding Comma],
       ISNULL((
            SELECT ', ' + x.Person
            FROM @Tickets x
            WHERE x.TicketID = t.TicketID
            GROUP BY x.Person
            FOR XML PATH (''), TYPE
        ).value('.','VARCHAR(max)'), '') [Preceding Comma If Not Empty]
FROM @Tickets t
GROUP BY t.TicketID</code>
登录后复制

Oracle 解决方案

Oracle 提供了 LISTAGG 函数,专门用于将列值与自定义分隔符连接起来。 使用方法如下:

<code class="language-sql">SELECT TicketID,
       LISTAGG(Person, ',') WITHIN GROUP (ORDER BY Person) AS People
FROM @Tickets
GROUP BY TicketID</code>
登录后复制

这两种方法都有效地将多行合并为一列,并用逗号分隔连接的值。 函数的选择取决于您的数据库系统(SQL Server 或 Oracle)。

以上是如何在 SQL Server 和 Oracle 中将多行连接成单个逗号分隔列?的详细内容。更多信息请关注PHP中文网其他相关文章!

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