Можно ли «объединить» значения нескольких записей в одно поле без использования хранимой процедуры? - PullRequest
1 голос
/ 26 марта 2010

Сотрудник задал мне этот вопрос, и я сказал им: «Нет, для этого вам нужно написать спрок». Но я решил дать им шанс и рассказать об этом сообществу.

По сути, у них есть таблица с ключами, отображающими несколько значений. Для отчета они хотят агрегировать по ключу и «смешать» все значения в одном поле. Вот изображение:

---  -------
Key  Value
---  -------
1    A
1    B
1    C
2    X
2    Y

Результат будет следующим:

---  -------
Key  Value
---  -------
1    A,B,C
2    X,Y

Им это нужно в SQLServer 2005. Опять же, я думаю, что им нужно написать хранимую процедуру, но если кто-то знает волшебную готовую функцию, которая делает это, я был бы впечатлен.

1 Ответ

0 голосов
/ 26 марта 2010

Я не уверен, что sql-сервер поддерживает group_concat - но это то, что вы использовали бы в MySQL:

SELECT key, GROUP_CONCAT(value) FROM table_name GROUP BY key

Я использую это все время.

Кроме того, для добавления к этому параметру GROUP_CONCAT по умолчанию значение будет разделяться запятыми, но вы можете отформатировать его любым способом - вставляя текст, вычисления или значения из других столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...