需要连接同一行的列值

本文关键字:一行 连接 | 更新日期: 2023-09-27 17:53:34

在如此少的join之后,我的视图是这样的

ID      Code
1       US
1       UK
1       GR
2       US
2       IN
3       US  
3       AF
3       RU
3       SA

要求结果:

ID  Code
1   US,UK,GR
2   US,IN
3   US,AF,RU,SA

我尝试使用FOR XML PATH.

但是由于我的表中记录的数量很高,这会导致性能问题,执行

需要连接同一行的列值

需要20多分钟

您可以使用下面的查询,

Select T.Id,
       Left(T.[Codes],Len(T.[Codes])-1) As Codes
From
    (
        Select distinct T2.ID, 
            (
                Select T1.Code + ',' AS [text()]
                From @T T1
                Where T1.ID = T2.ID
                ORDER BY T1.ID
                For XML PATH ('')
            ) [Codes]
        From @T T2
    ) T

@T是您的输入表,如Declare @T as Table (ID INT, Code varchar(10))

查看下面的链接,在这里您可以找到满足您需求的不同示例:

在Transact-SQL中连接行值