我想在一个字符串中选择一组数据,但我仍然希望每个项目都在自己的行上(然后我将它放在Crystal Reports中,它将比使用大量子报表更快.)
所以,我有以下数据:
ID Assessor
1 Black
1 Jones
我想查询它,并返回一个看起来像这样的字符串:
Black
Jones
如果我使用coalesce进行选择,我可以使用逗号或分号分隔,但不能使用换行分隔:
BEGIN
declare @Assessors NVarChar(max)
Declare @LineFeed varchar(10)
DECLARE @Return varchar(10)
Set @LineFeed = char(10)
SET @Return = char(13)
Select @Assessors = COALESCE(@Assessors + ', ', '') + a.Assessor
FROM dbo.Assessment a
Where (@ID = a.ID)
Return @Assessors
END
在那,该函数将返回’黑色,琼斯’.但是,如果我将线路更改为
Select @Assessors = COALESCE(@Assessors + @Return + @LineFeed, '') + a.Assessor
它返回’Black Jones’ – 它没有放入换行或返回,只是一个空格.
我想我不必使用Coalesce,但我已经尝试过标准连接,而且不会把它放入其中.我现在已经在函数中使用了这个函数,但是计划将它作为存储过程的一部分,因此速度更快.