2010-06-03 56 views
0

的Sql结合2行至一个

employee name 
------------ 
Sam Korch 
dan mano 

我想拖行结合起来,我有这个表测试仪,这将是“萨姆Korch,丹马诺”

我有这个疑问

select @theString = COALESCE(@theString + ',', '') + EmployeeName 
    from Testers join vw_EKDIR on Testers.TesterGlobalId = vw_EKDIR.GlobalID 
where TestId = 31 

它的工作,但我不想做的选择我想要的结果将是@thestring

,所以我尝试这样做QUER y

set @theString = (
    select @theString = COALESCE(@theString + ',', '') + EmployeeName 
     from Testers join vw_EKDIR on Testers.TesterGlobalId = vw_EKDIR.GlobalID 
    where TestId = 31 
    ) 

它不工作...我想@thestring将是结果。

任何idaes?

感谢

+0

当你说它正在工作时,你的意思是选择正确运行,还是运行正确_and_填充变量? – 2010-06-03 11:00:09

+0

它填充变量以及 – Yan 2010-06-03 11:01:17

+0

如果你的第一个查询已经做了你所需要的(填充变量),你想用第二个查询来达到什么目的? – VladV 2010-06-03 11:36:21

回答

0

对于SQL的一部分,并不像这样的工作:

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

我不知道具体的RG-SQL服务器/ RG-TSQL。

1

我有这样的功能,它的工作

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 [email protected] 

      RETURN @p 
      END 
1

对于SQL Server 2005 +,你可以使用FOR XML PATHSTUFF函数返回一个连续清单:

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, '') 
0

集@theString =(选择COALESCE(@theString +',','')+员工姓名 来自测试人员加入vw_EKDIR在Testers.TesterGlobalId = vw_EKDIR.GlobalID 其中TestId = 31 )