Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Можно ли объединить значения из разных строк в одну ячейку?  [new]
FilEd
Member

Откуда:
Сообщений: 47
Есть 2 таблицы Клиенты и Телефоны:
Table Clients

ClientID ClientName
======== ==========
1          Ivanov
2          Petrov
3          Sidorov

Table Phones

ClientID Phone
======== ======
1         111
1         112
2         221
2         222
2         223

Можно ли как-то получить результат в котором для каждого клиента будут выписаны все его номера телефонов, в таком виде? :

ClientID ClientName Phone
======== ========== =====
1          Ivanov   111,112  
2          Petrov   221,222,223
3          Sidorov
14 сен 09, 15:06    [7655888]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли объединить значения из разных строк в одну ячейку?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
https://www.sql.ru/faq/faq_topic.aspx?fid=130
14 сен 09, 15:10    [7655924]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли объединить значения из разных строк в одну ячейку?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
SELECT
 C.ClientID,
 C.ClientName,
 STUFF((SELECT ','+P.Phone FROM Phones P WHERE P.ClientID=C.ClientID ORDER BY P.Phone FOR XML PATH('')),1,1,'') Phone
FROM Clients C
ORDER BY C.ClientID;
14 сен 09, 15:32    [7656132]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли объединить значения из разных строк в одну ячейку?  [new]
FilEd
Member

Откуда:
Сообщений: 47
К сожалению пока что ничего не помогло. Используется сервер SQL 2000. Плюс поле Phone в реальных данных имеет тип NTEXT и в нем на самом деле может быть большой объем тектсовых данных, по крайней мере больше 4000.
14 сен 09, 15:51    [7656278]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли объединить значения из разных строк в одну ячейку?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
FilEd
поле Phone в реальных данных имеет тип NTEXT и в нем на самом деле может быть большой объем тектсовых данных, по крайней мере больше 4000.
Представим себе ситуацию - заказал юзер отчет "список клиентов с телефонами"
и выдался ему отчет, в котором напротив каждого клиента - сотни этих самых телефонов

Хотел бы я посмотреть, как он этот отчет на печать отправит,
как эту стопку бумаги в руки возьмет и по этим телефонам звонить начнет

Автор, поговорите с тем, кто Вам такую задачу поставил,
может как-то изменить задачу, чтобы она стала полезна людям
14 сен 09, 15:56    [7656319]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли объединить значения из разных строк в одну ячейку?  [new]
FilEd
Member

Откуда:
Сообщений: 47
Паганель,

я просто не ожидал, что тип поля будет иметь значение. На самом деле поле Phone называется по другому в реале, а данные там не номера телефонов а длинные тексты NTEXT. Пример я привел с телефонами только для того, чтобы было проще понять чего надо добиться. В общем извините, если что не так. С новыми условиями задача решается или нет?
14 сен 09, 16:04    [7656375]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли объединить значения из разных строк в одну ячейку?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Я не знаю как решить на стороне сервера эту задачу (при описанных Вами условиях)
Возможно, помог бы переход на 2008

Рекомендую также подумать о том, чтобы решить задачу на стороне клиента...
14 сен 09, 16:13    [7656445]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли объединить значения из разных строк в одну ячейку?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
может ето поможет ?
-------------------------------------
Jedem Das Seine
14 сен 09, 16:32    [7656579]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить