Sql 在字段中联接值

Sql 在字段中联接值,sql,sql-server-2008,tsql,group-concat,Sql,Sql Server 2008,Tsql,Group Concat,我有个问题 我需要将列的值连接到一个字段中,用分号分隔。 我使用XML路径,但响应时间很长 这是我的桌子: ID COLOR 1 WHITE 1 RED 2 BLACK 2 RED 这就是我需要输出的内容: ID COLORS 1 WHITE; RED 2 BLACK; RED 我怎么做 实际上,我的代码是: SELECT * FROM Client A OUTER APPLY (SELECT Origen + '; ' FR

我有个问题

我需要将列的值连接到一个字段中,用分号分隔。 我使用XML路径,但响应时间很长

这是我的桌子:

ID   COLOR
1    WHITE
1    RED
2    BLACK
2    RED
这就是我需要输出的内容:

ID   COLORS
1    WHITE; RED
2    BLACK; RED
我怎么做

实际上,我的代码是:

SELECT *
FROM 
Client A
OUTER APPLY (SELECT Origen  + '; '
         FROM ( SELECT DISTINCT F.IdSC, C.Origen
            FROM SC F
                LEFT JOIN OrigenSC B ON F.IdSC = B.IdSC
            LEFT JOIN Origen   C ON B.IdOrigen = C.IdOrigen                             
        ) D
    WHERE D.Id = A.IdSC
    ORDER BY D.Origen
    FOR XML PATH('')) H (Origen)

鉴于上述颜色示例,您可以尝试以下内容:

create table Colors
(
    ID INT,
    COLOR varchar(32)
)

INSERT INTO Colors values(1, 'WHITE')
INSERT INTO Colors values(1, 'RED')
INSERT INTO Colors values(2, 'BLACK')
INSERT INTO Colors values(2, 'RED')
INSERT INTO Colors values(3, 'GREEN')
INSERT INTO Colors values(3, 'RED')

WITH UniqueColors AS ( SELECT DISTINCT ID FROM Colors )
SELECT 
    ID,
    STUFF(
            (   SELECT '; '+COLOR 
                FROM Colors 
                WHERE ID = UniqueColors.ID 
                FOR XML PATH('') 
            ) 
            , 1, 2, ''
        ) AS [ColorList]
FROM UniqueColors

这是从其他一些例子中得到的

在此网站上搜索SQL Pivot。向我们显示您迄今为止尝试的代码。这是此问题的重复:@Oded这不是Pivot查询。它正在模拟GROUP_CONCAT@Longha显示您缓慢的XML路径查询。还有,您的表上有哪些索引?正如@MartinSmith在上面所问的,您能显示您的索引吗?