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

Откуда: Москва
Сообщений: 42
Пусть есть следующая таблица:
T

Id Address
1 aaa
1 bbb
2 ccc
2 ddd
3 eee


Надо получить следующую выборку:
1  aaa, bbb

2 ccc, ddd
3 eee

То есть, надо для каждого Id соединить строки в одно поле (естественно, что строк с одинаковым Id в таблице T может быть сколь угодно много).

Знаю способ, как это "красиво" сделать для одного значения Id
declare @Addresses varchar(255)

SET @Addresses = ''
SELECT @Addresses = @Addresses + ', ' + Address FROM T where Id = 1
select @Addresses = substring(@Addresses, 3, 255)


Но сделать что-либо подобное сразу для все Id не получилось. Пытался создать временную таблицу и апдейтить её, но не вышло. Вот этот код:
/* Вот временная таблица с содержимым:

#T
Id Addresses
1 ''
2 ''
3 ''
*/


update #T
set #T.Addresses = #T.Addresses + ', ' + T.Address
from T, #T
where
T.Id = #T.Id


Не получается, потому что сервер каждую строку в #T апдейтит только один раз; соответственно, в #T получается только одно (первое) значение Address для каждого Id.

Знаю, что задачку можно решить, используя курсор и "красивый" алгоритм, приведённый выше.
А может как без курсора?
Спасибо.
10 сен 03, 13:03    [333173]     Ответить | Цитировать Сообщить модератору
 Re: Складывание стрингов из разныз записей  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
FAQ
10 сен 03, 13:06    [333184]     Ответить | Цитировать Сообщить модератору
 Re: Складывание стрингов из разныз записей  [new]
Alexei Petrakov
Member

Откуда: Москва
Сообщений: 42
А какой из способов (курсор, функция, промежуточная таблица (как в FAQ)) быстрее никто случайно не проверял?
10 сен 03, 13:21    [333212]     Ответить | Цитировать Сообщить модератору
 Re: Складывание стрингов из разныз записей  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
А спробуй и всем расскажешь.
10 сен 03, 13:26    [333222]     Ответить | Цитировать Сообщить модератору
 Re: Складывание стрингов из разныз записей  [new]
KOLCHOZ_POSTEVENT
Guest
У меня ща нет настроения лепить коды,но с позволения уважаемого собрания,осмелюсь предложить такой план:
1)создаёте таблицу из ID и большого VARCHAR ,в котором должна накапливаться строка.
2)вешаете на неё INSERT TRIGGER,который проверяет ,если id существует,то он апдейтом добавляет ей строку из новой записи,а саму новую запись,кхе,удаляет,для этого сначала можно употребить rollback,а потом уже апдейт существующей записи.
3)новая таблица закачивется командой insert/select
10 сен 03, 17:10    [333764]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить