我有这张表Testers
employee name
------------
Sam Korch
dan mano
我想将两行合并为一行,它将是“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成为结果。
任何idaes?
谢谢
答案 0 :(得分: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 T_NAME.T_OTHER_FIELD=@c
RETURN @p
END
答案 1 :(得分:1)
对于SQL Server 2005+,您可以使用FOR XML PATH
和STUFF函数返回连接列表:
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, '')
答案 2 :(得分:0)
对于sql-part,不是这样的工作:
SELECT t1.name + ", " + t2.name
FROM tester t1,
tester t2
WHERE t1.TesterGlobalId == t2.GlobalId
AND t1.testId = 31;
我不知道具体的rg-sql-server / rg-tsql。
答案 3 :(得分:0)
设置@theString =(选择COALESCE(@theString +',','')+ EmployeeName 来自Testers在Testers.TesterGlobalId = vw_EKDIR.GlobalID上加入vw_EKDIR 其中TestId = 31 )