Разбить значения строк на столбцы?

Входная таблица

Id 
1,2,3
6,8,1,2,5
4,9,2,1
6,7,8

Мне нужен такой вывод

Id1 id2 id3 id4   id5
1    2   3  Null  Null
6    8   1   2    5
4    9   2   1    Null
6    7   8  Null  Null

person Mukesh    schedule 12.04.2019    source источник
comment
Почему sqlite и sql-сервер в ваших тегах? Удалите неактуальный тег.   -  person forpas    schedule 12.04.2019
comment
Не храните данные с разделителями таким образом. С ним ужасно работать, потому что он нарушает 1NF.   -  person Sean Lange    schedule 12.04.2019
comment
Экспортируйте данные и повторно импортируйте их.   -  person Gordon Linoff    schedule 12.04.2019
comment
Что вы пробовали до сих пор, и какие результаты вы получили? А какую СУБД вы используете, SQL Server или SQLite?   -  person Brian    schedule 12.04.2019


Ответы (1)


Если вы не можете повторно импортировать, как предложил Гордон, попробуйте следующее:

Select A.ID
      ,B.*
 From  YourTable A
 Cross Apply (
                Select Pos1  = xDim.value('/x[1]','int')
                      ,Pos2  = xDim.value('/x[2]','int')
                      ,Pos3  = xDim.value('/x[3]','int')
                      ,Pos4  = xDim.value('/x[4]','int')
                      ,Pos5  = xDim.value('/x[5]','int')
                From  (Select Cast('<x>' + replace([Id],',','</x><x>')+'</x>' as xml) as xDim) as A 
             ) B

Возврат

введите здесь описание изображения

person John Cappelletti    schedule 12.04.2019