sqlserver 合并列数据的实现(sql合并数据表)硬核推荐

随心笔谈2年前发布 admin
183 0 0

文章摘要

这篇文章描述了一段 SQL 查询代码,主要用于从 `pm_eps` 表中提取特定的记录,并结合 `eps_root` 表的数据生成结构化的 `eps_code` 和 `eps_name` 字段。代码使用 `union all` 合并了两个 SELECT 语句,第一个从 `pm_eps` 表中选择 enablestate=2 且 pk_eps 为 '1001A11000000003P62E' 的记录,第二个则从 `eps_root` 表中进行 inner join 处理。最终的 SELECT 语句对结果进行去重并按 eps_code 排序,以防止中文显示错乱。

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

© 版权声明

相关文章