-->

четверг, 25 декабря 2014 г.

Объединение (аггрегация, конкатенация) строк в Microsoft SQL Server

Что это и зачем? Посмотрите на картинку. К сожалению, Sql Server не содержит встроенной аггрегирующей функции, позволяющей преобразовать данные подобным образом:

Как оказалось, реализовать  этот функционал можно массой способов:

Concatenating Row Values in Transact-SQL
Масштабный обзор способов объединения строк в SQL Server.

String aggregation in the SQL Server world
Обзор-сравнение скорости работы курсоров и XPath.

GROUP_CONCAT string aggregate for SQL Server
Вариант "установил и забыл". Проект, добавляющий аггрегирующую функцию GROUP_CONCAT, иначе говоря SQLCLR User-defined Aggregate function (SQLCLR UDA).
Плюсы:
  • простота установки (достаточно выполнить один SQL скрипт);
  • скорость работы (по заявлениям авторов, сравнимая с XPath);
  • реюзабельность.
Мне понравился последний вариант. Посмотрите, как просто использовать GROUP_CONCAT:

  SELECT Foo
 ,dbo.GROUP_CONCAT(Bar)
  FROM GroupConcatTest
  GROUP BY Foo

Комментариев нет:

Отправить комментарий