2013-03-31 15 views
0

我有表格Products和第二個表格ColorsMicrosoft SQL Server以分隔符連接獲得第二個表格選項

這兩個表格中都有FK productId

Color表是這樣的:

colorId | productId | color 
--------------------------- 
1  | 10  | Red 
2  | 10  | Yellow 
3  | 10  | Green 

我怎麼能這樣做,以獲得在一行中有逗號分隔符相關聯的所有productId = 10所有顏色的加入?

我指的是結果應該是這樣的:

prodId | ProdName | Colors 
----------------------------- 
10  |Man t-Short|Red, Green,Yellow 

謝謝

回答

1

您可以使用FOR XML PATH的值連接成一列:

select distinct p.prodid, p.prodname, 
    STUFF((SELECT distinct ', ' + c.color 
     from Colors c 
     where p.prodId = c.productid 
      FOR XML PATH(''), TYPE 
      ).value('.', 'NVARCHAR(MAX)') 
     ,1,2,'') colors 
from products p; 

SQL Fiddle with Demo

或者你可以使用CROSS APPLYFOR XML PATH

select p.prodid, 
    p.prodname, 
    left(colors, len(colors)-1) colors 
from products p 
cross apply 
(
    select c.color + ', ' 
    from colors c 
    where p.prodid = c.productid 
    for xml path('') 
) c (colors); 

SQL Fiddle with Demo

+1

謝謝你..正是我需要它 – Teodor

相關問題