需要连接同一行的列值

时间:2016-07-01 05:29:23

标签: c# sql-server sql-server-2008 sql-server-2012

经过这么少的加入我的视图就像这样

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分钟

2 个答案:

答案 0 :(得分:0)

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

Concatenating Row Values in Transact-SQL

答案 1 :(得分:0)

您可以使用以下查询

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))