Sql将两行合并为一行

Sql将两行合并为一行,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有这个桌子测试员 employee name ------------ Sam Korch dan mano 我想把两排合二为一,是山姆·科奇,丹·马诺 我有这个疑问 select @theString = COALESCE(@theString + ',', '') + EmployeeName from Testers join vw_EKDIR on Testers.TesterGlobalId = vw_EKDIR.GlobalID where TestId = 31

我有这个桌子测试员

employee name
------------
Sam Korch
dan mano
我想把两排合二为一,是山姆·科奇,丹·马诺

我有这个疑问

select @theString = COALESCE(@theString + ',', '') + EmployeeName 
  from Testers join vw_EKDIR on Testers.TesterGlobalId = vw_EKDIR.GlobalID
 where TestId = 31   
它正在工作,但我不想做选择我希望结果将在@thestring中

所以我试着做这个查询

set @theString = (
    select  @theString = COALESCE(@theString + ',', '') + EmployeeName 
      from Testers join vw_EKDIR on Testers.TesterGlobalId = vw_EKDIR.GlobalID
     where TestId = 31 
    )
它不起作用。。。我想@thestring将是结果

有艾德家族吗


谢谢您的sql部分,类似这样的东西不管用吗:

SELECT t1.name + ", " + t2.name 
FROM tester t1, 
     tester t2
WHERE t1.TesterGlobalId == t2.GlobalId
AND t1.testId = 31;

我不知道具体的rg sql server/rg tsql。

我有这个函数,它可以工作

    ALTER FUNCTION [dbo].[udf_concat] ( @c INT )
            RETURNS VARCHAR(MAX) AS BEGIN
            DECLARE @p VARCHAR(MAX) ;
            SET @p='';
                SELECT    @p = @p + ISNULL(T_NAME.T_FIELD,'')+'|'
                FROM         T_NAME 
where T_NAME.T_OTHER_FIELD=@c

            RETURN @p
            END

对于SQL Server 2005+,可以使用For XML PATH和function返回串联列表:

SELECT @theString = STUFF(SELECT ','+ vwe.employeename
                            FROM TESTERS t
                            JOIN VW_EKDIR vwe ON vwe.globalid = t.testerglobalid
                           WHERE t.testid = ?
                         FOR XML PATH('')), 1, 1, '')

设置@theString=selectCOALESCE@theString+','和+EmployeeName 从Testers加入Testers.TesterGlobalId=vw_EKDIR.GlobalID上的vw_EKDIR 其中TestId=31

当您说select运行正常时,是指select运行正常,还是说select运行正常并填充了变量?它也填充了变量如果您的第一个查询已经完成了填充变量所需的操作,那么您想用第二个查询实现什么?