Tengo una advertencia: yo he utilizado muchas veces este truco y solamente en este mes descubrí que tiene un bug cuando el conjunto esta ordenado por una expresión compuesta. Por ejemplo:
Código SQL:
Ver originalDECLARE @variable VARCHAR(MAX);
SELECT @variable=COALESCE(@variable + ' ', '') + dato FROM #temp ORDER BY dato+'';
SELECT @variable AS campo;
(Con Order By dato funciona perfectamente y afortunadamente todos nuestros códigos en la producción estan ordenados por columnas y no por expresiones)
Según Microsoft este metodo no esta apoyado por ellos

y debemos utilizar el XML:
Código SQL:
Ver originalDECLARE @variable VARCHAR(MAX);
SELECT @variable=(SELECT COALESCE(@variable,'')+' '+dato
FROM #temp
ORDER BY dato+''
FOR XML PATH, TYPE).VALUE('.[1]','Varchar(Max)');
SELECT @variable AS campo;