2011-05-11 63 views
1

可能重複:
Simulating group_concat MySQL function in MS SQL Server 2005?
Concat groups in SQL Server如何多行MSSQL結合

我想寫一個SQL查詢,將結合在一起行。我需要它通過ID#將未指定數量的行分組在一起,但是將它們的地址連接到一個單元中。

說我們有

ID, Address 
p1 a1 
p1 a2 
p1 a3 
p2 a4 
p2 a5 

我想

ID, Address 
p1 a1,a2,a3 
p2 a4,a5 

每個ID地址的數量可能會有所不同。一些ID有1,其他可以有50.

任何幫助,將不勝感激。提前致謝!

回答

2
Select T1.Id 
    , Stuff(
     (
     Select ', ' + T2.Address 
     From MyTable As T2 
     Where T2.Id = T1.Id 
     Order By T2.Address 
     For Xml Path(''), type 
     ).value('.', 'nvarchar(max)'), 1, 2, '') As Address 
From MyTable As T1 
Group By T1.Id 
0

合併功能可用於生成該結果。合併返回集合中的第一個非空值。如果以下列方式使用它,它將按順序遞歸地返回每個值,直到它爲空並將其作爲逗號分隔的字符串返回。如果需要,您可以使用任何其他分隔符。

DECLARE @pAddr VarChar(MAX) 
SELECT @pAddr = COALESCE(@pAddr + ', ', '') + [Address] 
FROM AddressTable 
WHERE AddressTable.Key = @pKey 

您可以將此代碼放入UDF中,然後在視圖中簡單地調用該UDF傳遞該鍵。