Вот твой сценарий.Ваш столбец a
не является допустимым типом XML, поэтому мне нужно добавить его в качестве корневого элемента.
declare @strxml xml = concat('<t>', '<data1>11</data1><data2>4</data2><data1>12</data1><data2>5</data2>', '</t>')
SELECT
STUFF((SELECT ',' + b.dat.value('.', 'NVARCHAR(MAX)')
FROM tmp.node.nodes('data1') b (dat)
FOR XML PATH(''),TYPE).value('.', 'NVARCHAR(MAX)'),
1, 1, '') AS a,
STUFF((SELECT ',' + a.dat.value('.', 'NVARCHAR(MAX)')
FROM tmp.node.nodes('data2') a (dat)
FOR XML PATH(''),TYPE).value('.', 'NVARCHAR(MAX)'),
1, 1, '') AS b
FROM @strxml.nodes('/t') tmp(node);
, применяя вашу таблицу.просто замените test3
и yourcolumn
SELECT
STUFF((SELECT ',' + b.dat.value('.', 'NVARCHAR(MAX)')
FROM tmp.node.nodes('data1') b (dat)
FOR XML PATH(''),TYPE).value('.', 'NVARCHAR(MAX)'),
1, 1, '') AS a,
STUFF((SELECT ',' + a.dat.value('.', 'NVARCHAR(MAX)')
FROM tmp.node.nodes('data2') a ( dat )
FOR XML PATH(''),TYPE).value('.', 'NVARCHAR(MAX)'),
1, 1, '') AS b
FROM test3 t
CROSS APPLY (select cast(concat('<t>', yourcolumn, '</t>') AS xml)) as t1(X)
CROSS APPLY t1.X.nodes('t') AS tmp(node)