2015-10-21 5 views
-1

Мне нужна помощь, в моей базе данных У меня есть отношение ко многим, поэтому я создал таблицу Aux, чтобы сделать отношения от 1 до многих, а следующие таблицы.Таблицы Coalesce Sql server

offices   request  request_x_offices 
-------   ---------  ------------------ 
id    id    id_request 
office_name  name   id_office 

Так что, когда я сделать запрос request_x_offices я получить некоторые как следующий

request_x_offices 
----------------- 
id_request| id_office 
----------------- 
1 1 
1 2 
1 3 
1 4 
1 5 
2 1 
2 2 
2 3 etc... 

после я объединения, чтобы заменить offices_id именем офиса, и я получаю следующий

id_request|office_name 
----------------- 
1 | office_name1 
1 | office_name2 
1 | office_name3 
2 | office_name1 
2 | office_name3 
2 | office_name5 

Но я хочу получить что-то вроде следующего.

------ 
id_request|office_name 
1 |office_name1, office_name2, office_name3 
2 |office_name1, office_name3, office_name5 

Я попытался сделать COALESCE, но я получаю только одну строку со всеми office_name из всех идентификаторов :(

Любая помощь будет признателен, спасибо для вас время ребята.

+0

Google:... «агрегирование строки SQL Server» –

+1

это не то, что делает сливаться сливаться возвращает первое значение ненулевого в списке параметров Что йо u хочу, чтобы он генерировал список значений с разделителями. Вот статья, которая объясняет один из способов сделать это. http://www.sqlservercentral.com/articles/comma+separated+list/71700/ –

+0

Обычно вы хотите оставить данные, как показано в вашей второй последней таблице. Вы всегда можете запятыми делить данные, когда вы делаете SELECT, чтобы получить его из таблицы. –

ответ

0

Try с этим:

SELECT p1.ID, 
     (SELECT NAME + ' and ' 
      FROM YourTable p2 
      WHERE p2.ID = p1.ID 
      ORDER BY NAME 
      FOR XML PATH('')) AS Name, 
     sum(Amount) 
     FROM YourTable p1 
     GROUP BY ID ; 
Смежные вопросы