Posts Tagged ‘5 способов’

5 cпособов сделать агрегацию строк в SQL Server'е

Иногда возникает необходимость осуществить агрегацию строк в SQL запросе, то есть, по такому набору данных:

GroupId Item
1 AAA
2 IS
5 OMG
2 WHAT
2 THE
1 This

получить примерно такой:

GroupId ItemList
1 AAA,This
2 IS,WHAT,THE
5 OMG

MySQL, например, для таких целей обладает встроенной функцией GROUP_CONCAT():

SELECT GroupId, GROUP_CONCAT(Item SEPARATOR ",") AS ItemList
FROM Items

В MS SQL Server'e такой функции нету, поэтому приходится извращаться. Перед тем, как приступить, сделаем скрипт для создания тестовой таблицы:

CREATE TABLE Items(GroupId INT, Item NVARCHAR(10))
 
INSERT INTO Items(GroupId, Item)
SELECT 1 AS GroupId, 'AAA' AS Item
  UNION ALL
SELECT 2, 'IS'
  UNION ALL
SELECT 5, 'OMG'
  UNION ALL
SELECT 2, 'WHAT'
  UNION ALL
SELECT 2, 'THE'
  UNION ALL
SELECT 1, 'This'

Итак, начнем.
Читаем дальше