sqlserver 合并列数据的实现

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

sqlserver 合并列数据的实现

我是个假程序员   2023-02-03 我要评论

sql server 递归查询树型结构某节点的所有上级节点,并且把这些所有上级节点多行拼接为一行,即合并列数据

with eps_root(pk_eps, pk_parent, eps_code, eps_name) as
(
    SELECT
         pk_eps, pk_parent, eps_code, eps_name
     FROM pm_eps
     where enablestate = 2
       and pk_eps = '1001A11000000003P62E'
    union all
    SELECT
        e.pk_eps, e.pk_parent, e.eps_code, e.eps_name
    FROM pm_eps e
          inner join eps_root r on e.pk_eps = r.pk_parent
    where e.enablestate = 2
)

select distinct 
	eps_code = stuff((select '/' + convert(nvarchar(500), eps_code) from (select distinct eps_code from eps_root) r1 for xml path('')), 1, 1, ''),
	--此次需要使用eps_code排序,不然中文的会错乱顺序
	eps_name = stuff((select '/' + eps_name from (select top 99.99 PERCENT eps_name from eps_root order by eps_code) r2 for xml path('')), 1, 1, '')
from eps_root

执行sql,如下图效果:

在这里插入图片描述

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们