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

Откуда: Пиндырдышханда
Сообщений: 948
with A(num, txt) as (
Select 561, '358' union all
Select 562, '358' union all
Select 563, '358' union all
Select 5014, '426,427' union all
Select 506, '427,427' union all
Select 501, '428,427'
)
Select *
From A

как превратить в таблицу вида ?
автор
561 358
562 358
563 358
5014 427
506 427
501 427
5014 426
506 427
501 428
10 апр 17, 15:13    [20385372]     Ответить | Цитировать Сообщить модератору
 Re: преобразовать таблицу  [new]
Erik_Kartmann
Member

Откуда: Пиндырдышханда
Сообщений: 948
select num, substring( name, i2 + 1, i1 - i2 -1 ) name
from
(
select num, t1.name
     , charindex( ',', t1.name + ',', number ) i1
     , case when number = 0 then 0 else charindex( ',', t1.name + ',', number - 1 ) end i2
  from A t1 
    inner join master.dbo.spt_values t2
      on t2.type = 'P' and number between 0 and len( t1.name )
) t where i1 != i2
10 апр 17, 15:21    [20385408]     Ответить | Цитировать Сообщить модератору
 Re: преобразовать таблицу  [new]
iiyama
Member

Откуда:
Сообщений: 642
Erik_Kartmann,

with A(num, txt) as (
Select 561, '358' union all
Select 562, '358' union all
Select 563, '358' union all
Select 5014, '426,427' union all
Select 506, '427,427' union all
Select 501, '428,427'
)
select num,txt, subnum
from
(
Select 
num
,txt
,parsename(REPLACE(txt,',','.'),1) as [1]
,parsename(REPLACE(txt,',','.'),2) as [2]
,parsename(REPLACE(txt,',','.'),3) as [3]
,parsename(REPLACE(txt,',','.'),4) as [4]
From A
)p
UNPIVOT
(
 subnum for val in ([1],[2],[3],[4])
)as unpvt
10 апр 17, 15:33    [20385482]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить