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'
Итак, начнем.
Читаем дальше
Программизм5 способов, SQL, SQL Server, агрегация строкФевраль 19, 2009
6 комментариев