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

Откуда:
Сообщений: 6
Доброго времени суток!!
Вот столкнулся с проблемой никак не получается решить!
есть таблица(пример):
id Name Num
1 Петров 1
1 Петров 2
1 Петров 3
2 Семенов 4
2 Семенов 5
3 Иванов 6
3 Иванов 7
4 Сидоров 8

Необходимо получить
id Name Num
1 Петров 1, 2, 3
2 Семенов 4, 5
3 Иванов 6, 7
4 Сидоров 8

Использую MS SQL Server 8.00.2039(SP4)
Может кто когда то решал подобную проблему.
20 ноя 09, 21:54    [7958928]     Ответить | Цитировать Сообщить модератору
 Re: Обьединение различных строк в запросе  [new]
ё
Guest
L0rd
...
Может кто когда то решал подобную проблему.


Вы будете смеятся
но этот "кто-то", решает её - не реже чем раз в 2-а дня
20 ноя 09, 22:41    [7958994]     Ответить | Цитировать Сообщить модератору
 Re: Обьединение различных строк в запросе  [new]
Vutt
Member

Откуда:
Сообщений: 10
Есть такой вариант:
create table #t (id int, Name varchar(20), Num int)
insert #t
select 1, 'Петров', 1 union all
select 1, 'Петров', 2 union all
select 1, 'Петров', 3 union all
select 2, 'Семенов', 4 union all
select 2, 'Семенов', 5 union all
select 3, 'Иванов', 6 union all
select 3, 'Иванов', 7 union all
select 4, 'Сидоров', 8

SELECT id, Name, case when len(Num) > 0 then  substring(Num, 1, len(Num)-1) else '' end as Num
FROM (
	SELECT distinct a.id
		, a.Name
		, Num =
	(
		SELECT convert(varchar(10), b.Num) + ',' AS [data()]
		FROM #t b
		WHERE a.id = b.id
		ORDER BY b.Num
		FOR XML PATH ('')
	)
	FROM #t a
) T
ORDER BY id

Внешний select только для того чтобы убрать последние запятые в строках.

Но у меня Microsoft SQL Server 2005 и нет возможности проверить на 2000. Как более медленный, но точно работающий вариант - предварительно конкатенировать в цикле данные в строку, например во временной таблице.
20 ноя 09, 22:41    [7958995]     Ответить | Цитировать Сообщить модератору
 Re: Обьединение различных строк в запросе  [new]
Vutt
Member

Откуда:
Сообщений: 10
Тут подробней Сложение символьных полей в запросе
20 ноя 09, 22:58    [7959019]     Ответить | Цитировать Сообщить модератору
 Re: Обьединение различных строк в запросе  [new]
L0rd
Member

Откуда:
Сообщений: 6
Vutt,
Огромное спасибо!!! А то голову совсем сломал!
21 ноя 09, 10:51    [7959550]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить