Agrupación de cadenas agrupadas / LISTAGG para SQL Server

Estoy seguro de que esto se ha preguntado, pero no puedo encontrar los términos de búsqueda correctos.

Dado un esquema como este:

| CarMakeID | CarMake ------------------------ | 1 | SuperCars | 2 | MehCars | CarMakeID | CarModelID | CarModel ----------------------------------------- | 1 | 1 | Zoom | 2 | 1 | Wow | 3 | 1 | Awesome | 4 | 2 | Mediocrity | 5 | 2 | YoureSettling 

Quiero producir un set de datos como este:

 | CarMakeID | CarMake | CarModels --------------------------------------------- | 1 | SuperCars | Zoom, Wow, Awesome | 2 | MehCars | Mediocrity, YoureSettling 

¿Qué debo hacer en lugar de 'AGG' para cadenas en SQL Server en la siguiente consulta de estilo?

 SELECT *, (SELECT AGG(CarModel) FROM CarModels model WHERE model.CarMakeID = make.CarMakeID GROUP BY make.CarMakeID) as CarMakes FROM CarMakes make 

http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/

Es un problema interesante en Transact SQL, para el cual hay una cantidad de soluciones y debate considerable. ¿Cómo se puede producir un resultado resumido en el que se enumera una columna distintiva de cada fila en cada categoría particular en una columna 'agregada'? Una forma simple e intuitiva de mostrar datos es sorprendentemente difícil de lograr. Anith Sen ofrece un resumen de diferentes maneras y ofrece palabras de advertencia sobre la que elijas …

Si se trata de SQL Server 2017 o SQL Server VNext, la database SQL de Azure puede usar String_agg como se muestra a continuación:

 SELECT make.CarMakeId, make.CarMake, CarModels = string_agg(model.CarModel, ', ') FROM CarModels model INNER JOIN CarMakes make ON model.CarMakeId = make.CarMakeId GROUP BY make.CarMakeId, make.CarMake 

Salida:

 +-----------+-----------+---------------------------+ | CarMakeId | CarMake | CarModels | +-----------+-----------+---------------------------+ | 1 | SuperCars | Zoom, Wow, Awesome | | 2 | MehCars | Mediocrity, YoureSettling | +-----------+-----------+---------------------------+