使用重复数据提交的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路径,但仍然有重复的行。

请帮我解决这个问题,谢谢。

在TSQL中,您可以使用STRING_AGG((

select  STRING_AGG(concat(job1,'-', Unit1_level1, '-', Unit1_level2, ':'))  
from your_table 

尝试此组合STRING_AGG和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

您可以使用STRING_AGG()CONCAT_WS()如下:

SELECT Name,
STRING_AGG(CONCAT_WS('-', job1, Unit1_Level1, Unit1__Level2), ':')
FROM YourTable
GROUP BY Name;

String_Agg需要一个分隔符值

select  STRING_AGG(concat(job1,'-', Unit1_Level1, '-', Unit1_Level2, ':'),' ') a from @tmp

最新更新