2011-12-12 47 views
0

我遇到问题。在一个字段中加入值

我需要在一个字段中加入列的值,用分号分隔。 我使用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) 
+2

搜索此网站上的“SQL数据透视表”。 – Oded

+0

向我们展示您迄今为止尝试过的代码。 –

+0

这是这个问题的重复:http://stackoverflow.com/questions/122942/how-to-return-multiple-values-in-one-column-t-sql –

回答

0

鉴于上述颜色例子,这里是你可以尝试:

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 

这是从其它例如采取SO。

相关问题