Sql server 2008 如何将结果列值连接到一行?

Sql server 2008 如何将结果列值连接到一行?,sql-server-2008,Sql Server 2008,如何将结果值连接到一行中 我创建了两个这样的表 第一桌 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,A

如何将结果值连接到一行中

我创建了两个这样的表

第一桌

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 CO.id=@ID
END
然后我得到了结果

id  name
3   test1
3   test2
3   test3
请修改我的sp以获得以下格式的输出

id  name
3   test1,test2,test3
可能重复的
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;