2012-03-24 13 views
-2

結果の値を1行に連結する方法は?結果の列の値を1行に連結する方法は?

私はこのように2つのテーブルを作成しました。

最初のテーブル

clientid name 
1  test1 
2  test2 
3  test3 

二台

id clientid 
3 1 
3 2 
3 3 

result 
3 test1,test2,test3 

私のSPを取得し、私の要件....

ALTER PROCEDURE [dbo].[usp_test]-- 3 
    @ID INT 
AS 
BEGIN 
    SELECT CO.id,AR.name FROM dbo.test1 AR 
    LEFT OUTER JOIN dbo.test2 CO On AR.clientid=CO.clientid 
    WHERE [email protected] 
END 

は、それから私は、以下の形式の出力を得るために、私のSPを変更してください

id name 
3 test1 
3 test2 
3 test3 

として結果を取得しています

id name 
3 test1,test2,test3 
+2

可能重複[グループごとに特定の列からすべての文字列を連結する方法](http://stackoverflow.com/questions/6579440/how-to-concatenate-all-strings-from-a-certain-column-for-each-group) –

答えて

0
SELECT id, names = STUFF((
    SELECT ',' + name FROM dbo.test2 
    WHERE clientid = x.clientid 
    FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '') 
FROM dbo.test1 AS x 
WHERE id = @ID 
GROUP BY id; 
関連する問題