tengo los datos que se parece a:SQL Server: para la trayectoria XML - anidación/agrupación
OrderID CustomerID ItemID ItemName
10000 1234 111111 Product A
10000 1234 222222 Product B
10000 1234 333333 Product C
20000 5678 111111 Product A
20000 5678 222222 Product B
20000 5678 333333 Product C
Quiero escribir una consulta T-SQL en SQL Server para devolver los datos de la siguiente manera:
<Root>
<Order>
<OrderID>10000</OrderID>
<CustomerID>1234</CustomerID>
<LineItem>
<ItemID>11111</ItemId>
<ItemName>Product A</ItemName>
</LineItem>
<LineItem>
<ItemID>22222</ItemId>
<ItemName>Product B</ItemName>
</LineItem>
<LineItem>
<ItemID>33333</ItemId>
<ItemName>Product B</ItemName>
</LineItem>
</Order>
<Order>
<OrderID>20000</OrderID>
<CustomerID>5678</CustomerID>
<LineItem>
<ItemID>11111</ItemId>
<ItemName>Product A</ItemName>
</LineItem>
<LineItem>
<ItemID>22222</ItemId>
<ItemName>Product B</ItemName>
</LineItem>
<LineItem>
<ItemID>33333</ItemId>
<ItemName>Product B</ItemName>
</LineItem>
</Order>
</Root>
he intentado devolver la consulta en XML usando:
FOR XML PATH ('Order'), root ('Root')
Pero eso me da un nodo Order
para cada fila (6 en total) versus solo un nodo de orden para cada orderId
(2 en total).
¿Alguna idea?
Gracias Bert. ¿Qué hace 'type' en la subconsulta 'para xml path'? – jared
@jared Significa 'devolver esto como el tipo de datos XML'. Entonces, en la consulta anterior, simplemente devuelve la subconsulta como un pequeño fragmento xml. – Bert
Impresionante. ¡Gracias! – jared