2011-12-12 66 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。

相關問題