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

Откуда:
Сообщений: 14
При присоединение одной таблицы к другой, если в присоединяемой таблице несколько записей, как их записать в строчку через запятую, а не что бы они выводились в несколько строк....
Например при присоединении к городу районов:
Вместо:

(1) (Москва) (Отрадное)
(1) (Москва) (Солнцево)
...

Хочется получить:

(1) (Москва) (Отрадное, Солнцево, ...)

Сколько не искал не нашел не одного способа нормального, приходиться извращаться...
1 мар 05, 12:26    [1352130]     Ответить | Цитировать Сообщить модератору
 Re: Преобрзование столбца в строку????  [new]
Glory
Member

Откуда:
Сообщений: 104760
И в FAQ тоже не нашли ?
1 мар 05, 12:28    [1352137]     Ответить | Цитировать Сообщить модератору
 Re: Преобрзование столбца в строку????  [new]
Berg
Member

Откуда: Кр-ск
Сообщений: 3480
Кто бы поделился, где ВЫ вообще ищете, если не
скажем, здесь ?
1 мар 05, 12:29    [1352145]     Ответить | Цитировать Сообщить модератору
 Re: Преобрзование столбца в строку????  [new]
barmaxim
Member

Откуда:
Сообщений: 14
Ничего не нашел...
Вчера весь вечер и скал и сегодня утром
1 мар 05, 12:30    [1352147]     Ответить | Цитировать Сообщить модератору
 Re: Преобрзование столбца в строку????  [new]
barmaxim
Member

Откуда:
Сообщений: 14
Спасибо всем. Метод рабочий, хотя и не понятно как он работает...
1 мар 05, 12:42    [1352222]     Ответить | Цитировать Сообщить модератору
 Re: Преобрзование столбца в строку????  [new]
Палатов
Member

Откуда:
Сообщений: 1
Еще один пример сложения нескольких символьных строк в одну. Особенность в том что сначало надо отсортировать по идентифицирующему признаку, но зато не нужно дополнительные функции

CREATE TABLE #TEMP (NUM int, VALUE varchar(1000))
INSERT #TEMP SELECT 1, 'Гвозди'
INSERT #TEMP SELECT 1, 'Чайник'
INSERT #TEMP SELECT 2, 'Рельсы'
INSERT #TEMP SELECT 2, 'Шпалы'
INSERT #TEMP SELECT 2, 'Паравоз'

SELECT * INTO #TEMP1 FROM #TEMP ORDER BY NUM

DECLARE @cBuf varchar(1000), @t1  int
select @t1 = min(NUM) from #TEMP
SET @cBuf=NULL

update #TEMP1 set @cBuf = VALUE = case when @t1 = NUM then ISNULL(@cBuf+',','') + LTRIM(RTRIM(VALUE)) ELSE LTRIM(RTRIM(VALUE)) END,
@t1 = NUM = NUM

SELECT NUM, MAX(VALUE) FROM #TEMP1 GROUP BY NUM
4 мар 05, 11:04    [1362580]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить