Группировка транзакционных записей в одну ячейку - PullRequest
3 голосов
/ 27 октября 2011

У меня есть 2 таблицы (компании и контакты).Мне нужно создать список всех компаний (1 строка для идентификатора компании) со всеми контактами для каждого идентификатора компании, перечисленными в одной ячейке, разделенными разрывом строки для каждого отдельного контакта в компании.

Я бы предпочел, чтобы это было сделано в Access, так как таблицы взяты из базы данных BE доступа, но если это проще сделать в MSQL, то я тоже могу это сделать.

Спасибо за любые советы или решения.

Ответы [ 2 ]

2 голосов
/ 27 октября 2011

Если это для одного столбца, есть статья, которая может вас заинтересовать

* ** 1003 тысячи два *https://www.simple -talk.com / SQL / T-SQL-программирование / конкатенация-строка-значения-в-Transact-SQL /
0 голосов
/ 27 октября 2011

Для SQL 2005+ что-нибудь подобное поможет?

;with data as
(
SELECT  'Company1' AS company, 'Contact1' AS contact UNION ALL
SELECT  'Company1' AS company, 'Contact2' AS contact UNION ALL
SELECT  'Company1' AS company, 'Contact3' AS contact UNION ALL
SELECT  'Company1' AS company, 'Contact5' AS contact UNION ALL
SELECT  'Company2' AS company, 'Contact1' AS contact UNION ALL
SELECT  'Company3' AS company, 'Contact1' AS contact
)
SELECT
company
,STUFF((
SELECT ',' + contact
FROM data d2
WHERE d2.company = d1.company
FOR XML PATH('')), 1, 1, '') as contacts
FROM data d1
GROUP BY company
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...