如何将结果列值连接到单个行?

时间:2012-03-24 11:10:35

标签: 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,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

1 个答案:

答案 0 :(得分: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;