sql - SQL 合并归档重复数据
问题描述
我有一个包含一些重复数据的表,我想将工作和单位字段合并到一个字段中。
我的数据目前如下所示:
name job1 Unit1_Level1 Unit1__Level2
-------------------------------------------------------
A Teacher Infomation Information_office
A Staff Secretary Secretary_office
A Staff Engineer Engineer_office
B Teacher Finacial Finacial_office
C Teacher Engineer Engineer_office
C Staff Library Library_office
D Staff Library Library_office
我希望它看起来像这样:
name job
----------------------------------------------------------------------------------------------------------------
A Teacher-Infomation-Information_office:Staff-Secretary-Secretary_office:Staff-Engineer-Engineer_office
B Teacher-Finacial-Finacial_office
C Teacher-Engineer-Engineer_office:Staff-Library-Library_office
D Staff-Library-Library_office
我尝试了 FOR XML PATH ,但仍然有重复的行。
请帮我解答一下问题,谢谢。
解决方案
Try this combination STRING_AGG an CONCAT_WS
SELECT name, STRING_AGG(a.ct, ':' )
FROM (
SELECT name, CONCAT_WS('-', job1, Unit1_level1, Unit1__Level2, ':') ct
FROM MyTable
) a
GROUP BY name
推荐阅读
- bash - 如何在同一个文件中按顺序搜索多个字符串?
- typescript - 推断打字稿嵌套的泛型类型
- javascript - React Native,在选项卡导航器中按下选项卡时如何将参数传递到屏幕?
- iframe - iframe 在某些浏览器中正确加载网页,但在其他浏览器中不正确(不安全的内容错误)
- c# - Unity - 如果与子对象发生碰撞,如何锚定到对象
- python - 定义k-1个簇质心——SKlearn KMeans
- python - 位置参数跟随关键字 - menubar.add_cascade(label = "File", menu.filemenu) - 计算器
- javascript - TypeError:records.map 不是反应中的函数
- php - PHP - 将多个数组相互组合
- docusignapi - DocuSign Click API - 未经授权的响应调用 POST 协议