SQL合并文件与重复数据

问题描述 投票:0回答:1

我有一个表,里面有一些重复的数据,我想把工作和单位字段合并在一个字段里。

我的数据目前是这样的。

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 ,但仍然有重复的行。

请帮助我关于这个问题,谢谢你。

sql sql-server database tsql for-xml-path
1个回答
1
投票

在 TSQL 中,你可以使用 STRING_AGG()

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

1
投票

试试这个组合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

1
投票

你可以用 STRING_AGG()CONCAT_WS() 如下:

SELECT Name,
       STRING_AGG(CONCAT_WS('-', job1, Unit1_Level1, Unit1__Level2), ':')
FROM YourTable
GROUP BY Name;
© www.soinside.com 2019 - 2024. All rights reserved.