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

Откуда: Москва
Сообщений: 215
Собрал тестовый скрипт:

if object_id('tempdb..#Test') is not null
   drop table #Test

create table #Test
(ID  numeric(15,2)
,One varchar(20)
,Two varchar(20))

insert #Test
select 1,'1один','1два'
insert #Test
select 1,'1одиннадцать','1двадцать'
insert #Test
select 2,'2один','2два'

select t.*
from (
select id, (one+' '+two) as str
 from #Test
     ) as t


Хотелось бы получить результат вида


id str
1 1один 1два, 1одиннадцать 1двадцать
2 2один 2два

Можно ли как-то написать скрипт без цикла?

з.ы. для каждого id может быть неограниченное количество строк
20 июн 16, 14:11    [19314404]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать одним скриптом  [new]
пьяный тюлень
Member

Откуда:
Сообщений: 100
FAQ
20 июн 16, 14:24    [19314505]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать одним скриптом  [new]
Azvaal
Member

Откуда: Москва
Сообщений: 215
Спасибо, здорово помогло)
20 июн 16, 15:24    [19314830]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать одним скриптом  [new]
remi_
Member

Откуда: СПб
Сообщений: 248
select a.ID, b.Stri
from (
	select distinct Id from #Test
) a
outer apply (
	select Stri=(select t.one+' '+t.two+',' as 'data()'
	from #Test t
	where t.Id=a.Id
	for xml path(''))
) b


С оконечной запятой в первой строке, надеюсь, разберетесь сами.
21 июн 16, 10:52    [19317819]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить