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

Откуда:
Сообщений: 214
1. Как в
<row>
  <ExternalPartnerID>100000000</ExternalPartnerID>
  <Orders>
    <ExternalOrderID>123</ExternalOrderID>
    <OrderPositions>
      <PositionID>1</PositionID>
    </OrderPositions>
  </Orders>
</row>
<row>
  <ExternalPartnerID>100000000</ExternalPartnerID>
  <Orders>
    <ExternalOrderID>123</ExternalOrderID>
    <OrderPositions>
      <PositionID>2</PositionID>
    </OrderPositions>
  </Orders>
</row>

объединить ветви так, чтобы получилось

<row>
  <ExternalPartnerID>100000000</ExternalPartnerID>
  <Orders>
    <ExternalOrderID>123</ExternalOrderID>
    <OrderPositions>
      <PositionID>1</PositionID>
    </OrderPositions>
    <OrderPositions>
      <PositionID>2</PositionID>
    </OrderPositions>
  </Orders>
</row>

2. Можно ли это сделать в FOR XML PATH (xml получен с помощью нее)?
12 авг 09, 12:12    [7527094]     Ответить | Цитировать Сообщить модератору
 Re: Объединение ветвей xml  [new]
Roman S. Golubin
Member

Откуда: 140002
Сообщений: 11541
Можно. Группировка + вложенный for xml path
12 авг 09, 12:35    [7527257]     Ответить | Цитировать Сообщить модератору
 Re: Объединение ветвей xml  [new]
hnkovr
Member

Откуда:
Сообщений: 214
Roman S. Golubin
Можно. Группировка + вложенный for xml path

Что-то я не соображу.
Как это будет выглядеть для
select
         ExternalPartnerID	=	100000000
        ,ExternalOrderID	=	123
        ,PositionID			=	1
into	Orders

insert	Orders
select
         ExternalPartnerID	=	100000000
        ,ExternalOrderID	=	123
        ,PositionID			=	2

select 
         ExternalPartnerID	"ExternalPartnerID"
        ,ExternalOrderID	"Orders/ExternalOrderID"
        ,PositionID			"Orders/OrderPositions/PositionID"
from	Orders
order by 1, PositionID
FOR XML PATH 
?
12 авг 09, 13:23    [7527640]     Ответить | Цитировать Сообщить модератору
 Re: Объединение ветвей xml  [new]
Roman S. Golubin
Member

Откуда: 140002
Сообщений: 11541
Что-то такое:

select 
         ExternalPartnerID	"ExternalPartnerID"
        ,ExternalOrderID	"Orders/ExternalOrderID"
		,(select PositionID "OrderPositions/PositionID"
		  from Orders 
		  where ExternalPartnerID = o.ExternalPartnerID
		    and ExternalOrderID = o.ExternalOrderID
		  order by PositionID
		  for xml path(''), type) "Orders"
from	Orders o
group by ExternalPartnerID, ExternalOrderID
for xml path
12 авг 09, 13:41    [7527793]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить