¿Hay alguna buena forma de crear una list separada por comas en SQL Server?

En Firebird, hay un agregado llamado List() que convierte resultados múltiples en una cadena separada por comas.

Esta function no parece existir en SQL Server. ¿Hay algún equivalente que no implique una solución for xml grande, larga, fea y lenta usando for xml o construyendo uno propio como UDF de CLR? (Sí, conozco esos methods. Estoy buscando algo de lo que pueda no estar al tanto).

No, esas son las soluciones que tendrá que usar. Hemos estado pidiendo un equivalente GROUP_CONCAT desde 2006:

http://connect.microsoft.com/SQLServer/feedback/details/247118/sql-needs-version-of-mysql-group-concat-function

… pero el artículo solo recibió 13 votos positivos (y uno negativo). Así que no culpo exactamente a Microsoft por centrarse en otras mejoras del producto para impulsar las ventas y la satisfacción del cliente. No mucha gente se ha quejado (al less no directamente), y GROUP_CONCAT no es algo que la gente de marketing pueda hacer que se vea sexy en un mazo de diapositivas o en un comercial: la productividad del desarrollador no es exactamente lo que vende licencias. (Por otro lado, me gustaría conocer a más de 14 personas que lograron hacer cosas tontas como EOMONTH e IIF implementadas).

Por lo tanto, si considera que es importante tener esta funcionalidad, vote y, lo que es más importante, comente cómo mejorará su productividad / resultado final:

FWIW, la versión XML es fea, pero no es difícil de dominar. Lo he usado en docenas de respuestas aquí en SO y ni siquiera tengo que searchlo más. Tampoco creo que sea terriblemente lento. ¿Por qué crees que algo que Microsoft ponga de forma nativa será más rápido? Tendrá que hacer esencialmente lo mismo.