sql server 多行数据合并一行显示

2023-12-14 20:37:50

在?SQL?Server 中,可以使用 STUFF 和 FOR XML PATH 进行多行合并成一行。例如,假设有一个表名为 sys_role_permission ,其中包含role_id和role_permission_id:

以下查询将在 role_id 列上分组,将role_permission_id合并成一行:

SELECT role_id, STUFF((SELECT ', ' + permission_id
                        FROM sys_role_permission o2
                        WHERE o2.role_id = o1.role_id
                        FOR XML PATH('')), 1, 2, '') AS permission_id
FROM sys_role_permission o1
GROUP BY role_id

在STUFF函数中,第一个参数指定要插入的位置,第二个参数指定要从第一个参数指定的位置开始删除的字符数,第三个参数指定要插入的新值。在此查询中,使用 FOR XML PATH 将每个产品名称转换为逗号分隔的字符串,然后使用 STUFF 将第一个逗号删除并将所有产品名称合并成一个字符串。最后,使用 GROUP BY 在 role_id 列的基础上进行分组。

文章来源:https://blog.csdn.net/zgscwxd/article/details/134855870
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。