Сгруппированное строковое агрегирование / LISTAGG для SQL Server

Я уверен, что это спросили, но я не могу вполне найти правильные критерии поиска.

Учитывая схему как это:

| CarMakeID | CarMake
------------------------
|         1 | SuperCars
|         2 | MehCars

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

Я хочу произвести набор данных как это:

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

Что я делаю вместо 'AGG' для строк в SQL Server в следующем запросе стиля?

SELECT *, 
 (SELECT AGG(CarModel) 
  FROM CarModels model
  WHERE model.CarMakeID = make.CarMakeID
  GROUP BY make.CarMakeID) as CarMakes
FROM CarMakes make
18
задан Matt Mitchell 30 July 2010 в 05:44
поделиться

1 ответ

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

Это интересная проблема в Transact SQL, для которой существует есть ряд решений и серьезные споры. Как вы подойдете к получению итогового результата, в котором отличительный столбец из каждой строки в каждой конкретной категории указан в «агрегированном» столбце? На удивление сложно добиться простого и интуитивно понятного способа отображения данных. Анит Сен дает краткое изложение различных способов и предлагает слова предостережения по сравнению с тем, который вы выберете ...

11
ответ дан 30 November 2019 в 09:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: