基于层级选中值拼接CTE/临时表的SQL多行数据
按EID分组拼接层级路径的SQL实现
针对你的需求,这里提供一个适用于SQL Server的解决方案,能够按EID分组拼接层级路径并自动去除重复的"WFC - "前缀:
SELECT EID, 'WFC - ' + STRING_AGG(SUBSTRING(Fullpath, CHARINDEX('WFC - ', Fullpath) + 6, LEN(Fullpath)), ' - ') AS Fullpath FROM #tmpBH GROUP BY EID;
逻辑说明
- 截取层级部分:通过
CHARINDEX('WFC - ', Fullpath)定位前缀位置,再用SUBSTRING截取前缀之后的层级内容("WFC - "共6个字符,因此起始偏移量设为定位位置+6) - 分组拼接:使用
STRING_AGG函数将同EID下的所有层级部分以-为分隔符拼接成字符串 - 补充统一前缀:在拼接结果前添加统一的"WFC - "前缀,得到最终的合并路径
执行结果
运行上述代码后,将得到与你期望完全一致的输出:
| EID | Fullpath |
|---|---|
| E1 | WFC - CSBB : a1 - CL |
| E2 | WFC - CSBB : a2 - CL : b2 : c1 - CL : b1 |
| E3 | WFC - WIM : c2 : d2 - WIM : c1 |
内容的提问来源于stack exchange,提问作者Sabyasachi Patra
相关产品推荐
相关产品推荐

