Ich möchte eine Reihe von Daten in einer einzigen Zeichenfolge auswählen, aber ich möchte immer noch jedes Element in einer eigenen Zeile (ich werde es dann in Crystal Reports, und es wird schneller als mit Tonnen von Subreports sein).
Ich habe also die folgenden Daten:
ID Assessor
1 Black
1 Jones
und ich möchte es abfragen und eine einzelne Zeichenfolge zurückgeben, die wie folgt aussieht:
Black
Jones
Wenn ich einen Select mit Coalesce durchführe, kann ich ihn mit Komma oder Semikolon abgrenzen, aber nicht mit Zeilenvorschub:
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
in dem die Funktion 'Black, Jones' zurückgibt. Aber wenn ich die Zeile in
Select @Assessors = COALESCE(@Assessors + @Return + @LineFeed, '') + a.Assessor
wird 'Black Jones' zurückgegeben - es wird kein Zeilenvorschub oder Return eingefügt, nur ein Leerzeichen.
Ich denke, ich muss nicht Coalesce verwenden, aber ich habe versucht, nur Standard-Verkettung, und das wird nicht in entweder setzen. Ich habe dies in einer Funktion im Moment, aber planen auf setzen es als Teil einer gespeicherten Prozedur, so dass es schneller ist.