Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
LexusR Member Откуда: Novosibirsk Сообщений: 1887 |
по просьбе товарища примерчик навскидку .Критика и предложения приветствуются.declare @table table (id int,data xml) insert into @table values(1,'<root><header id="1"><list><item i="1"></item><item i="2"></item></list></header></root>') ,(2,'<root><header id="2"><list><item i="10"></item><item i="20"></item></list></header></root>') ,(3,'<root><header id="3"><list><item i="100"></item><item i="200"></item></list></header></root>') select '0' as [header/@id] ,(select data.query('//item') as [*] from @table t for xml path(''),type) as [list] for xml path(''),root('root') |
6 ноя 14, 07:42 [16804143] Ответить | Цитировать Сообщить модератору |
a_voronin Member Откуда: Москва Сообщений: 4807 |
Критика и предложения чего? Оптимально ли это будет работать на Марсе? |
6 ноя 14, 13:45 [16805934] Ответить | Цитировать Сообщить модератору |
Сон Веры Павловны Member Откуда: Сообщений: 6116 |
LexusR, Относительно структуры объединяемых кусков: <root> <header id="1"> <list> <item i="1"></item> <item i="2"></item> </list> </header> </root> решение некорректно: <root> <header id="0" /> <list> <item i="1" /> <item i="2" /> <item i="10" /> <item i="20" /> <item i="100" /> <item i="200" /> </list> </root> - тэг header не является родительским для list. Можно сделать вот так: declare @xdata xml; select @xdata=( select ( select ( select ( select data.query('//item') as [*] from @table t for xml path(''),type ) as [list] for xml path(''), root('header'), type ) as [header] ) for xml path(''), root, type ); set @xdata.modify('insert attribute id {"0"} into (/root/header)[1]'); но как-то это не особенно интересно. |
6 ноя 14, 14:39 [16806346] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |