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

Откуда:
Сообщений: 27
Всем доброго дня.
Нужно помощь в составлении запроса, в результате которого данные должны быть СЦЕПЛЕНЫ. Т.е. есть таблица, два столбца, в первом пользователи, во втором - комменты по ним.
В первом столбце могут быть дубли, т.к. по каждому пользователю новый коммент записывается в новую строку.
В MySQL для решения этой задачи есть функция group_concat, а вот в MS SQL такой нет.
Подскажите как решить задачку.
Во вложении скрин, как выглядит сейчас результат запроса.

К сообщению приложен файл. Размер - 101Kb
27 июл 14, 11:03    [16362426]     Ответить | Цитировать Сообщить модератору
 Re: как вывести запрос с объединением строк  [new]
_human
Member

Откуда:
Сообщений: 569
rezik81,
в sqlserver аналога нет, но можете все это сделать скриптом.
нужно предварительно убрать дубли - select * from (SELECT DISTINCT .. from ) as subQ
потом собираете в сроку -
http://www.sql.ru/faq/faq_topic.aspx?fid=731
27 июл 14, 13:07    [16362615]     Ответить | Цитировать Сообщить модератору
 Re: как вывести запрос с объединением строк  [new]
rezik81
Member

Откуда:
Сообщений: 27
_human
rezik81,
в sqlserver аналога нет, но можете все это сделать скриптом.
нужно предварительно убрать дубли - select * from (SELECT DISTINCT .. from ) as subQ
потом собираете в сроку -
http://www.sql.ru/faq/faq_topic.aspx?fid=731


Уточняю - убрать дубли из столбца с номерами телефонов?
27 июл 14, 16:56    [16363065]     Ответить | Цитировать Сообщить модератору
 Re: как вывести запрос с объединением строк  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
;with t0(phone, comment) as
(
	select '+79770000001', 'comment 11' union all
	select '+79770000001', 'comment 12' union all
	select '+79770000001', 'comment 13' union all
	select '+79770000002', 'comment 21' union all
	select '+79770000002', 'comment 22' union all
	select '+79770000003', 'comment 31'
)
select
	t1.phone,
	stuff
	(
		(
			select
				',' + comment
			from
				t0 t2
			where
				t2.phone = t1.phone
			for xml path('')
		)
	, 1, 1, '') as comments
from
	t0 t1
group by
	t1.phone;
27 июл 14, 17:47    [16363157]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить