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

Откуда:
Сообщений: 466
Добрый день.

Есть вот такой запрос

declare @str varchar(100) = 'Иванов Иван Иванович'

select
substring( str, i2 + 1, i1 - i2 -1 ) str
from ( select @str as str
, charindex( ' ', @str + ' ', number ) i1
, case when number = 0 then 0 else charindex( ' ', @str + ' ', number - 1 ) end i2
from master.dbo.spt_values t2
where t2.type = 'P' and number between 0 and len( @str )
) t where i1 != i2


Он выводит три строки, как можно сделать так, чтобы вывод был не в три строки а в три столбца, надеюсь понятно объяснил
7 окт 13, 12:59    [14933369]     Ответить | Цитировать Сообщить модератору
 Re: Разбить на три столбца  [new]
Glory
Member

Откуда:
Сообщений: 104751
ИльдарSR
Он выводит три строки, как можно сделать так, чтобы вывод был не в три строки а в три столбца

Написать 3 select-а
7 окт 13, 13:03    [14933389]     Ответить | Цитировать Сообщить модератору
 Re: Разбить на три столбца  [new]
o-o
Guest
какая-то какость:

declare @str nvarchar(100) = N'Иванов Иван Иванович';

with cte as(
select row_number() over (order by number) as n,
substring( str, i2 + 1, i1 - i2 -1 ) str
from ( select number,  @str as str
, charindex( ' ', @str + ' ', number ) i1
, case when number = 0 then 0 else charindex( ' ', @str + ' ', number - 1 ) end i2
from master.dbo.spt_values t2
where t2.type = 'P' and number between 0 and len( @str )
) t where i1 != i2)

select *              
from cte pivot (max(str) for n in ([1], [2], [3]))p
7 окт 13, 13:13    [14933449]     Ответить | Цитировать Сообщить модератору
 Re: Разбить на три столбца  [new]
Гость333
Member

Откуда:
Сообщений: 3683
ИльдарSR
как можно сделать так, чтобы вывод был не в три строки а в три столбца, надеюсь понятно объяснил

Не совсем понятна природа исходных данных.
Если там будет "Иванов Иван Иванович оглы", что должно быть на выходе?
7 окт 13, 13:14    [14933454]     Ответить | Цитировать Сообщить модератору
 Re: Разбить на три столбца  [new]
ИльдарSR
Member

Откуда:
Сообщений: 466
Спасибо большое
7 окт 13, 13:14    [14933455]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить