r.gall - Monday, February 11, 2019 8:15 AM
If I understand your data correctly, this should work
SELECT 'web' AS "@Source",
(
SELECT fldOrderNumber AS "@OrderNumber",
fldDeliveryFirstName AS "OrderCustomer/@FirstName",
fldDeliveryLastName AS "OrderCustomer/@LastName",
fldDeliveryEmail AS "OrderCustomer/@Email",
(
SELECT m.fldModuleTitle AS "@ModultTitle",
(
SELECT p.fldProductCode AS "@ProductCode",
c.fldOption AS "@Option",
c.fldQuantityOrdered AS "@Quantity",
c.fldUnitPrice AS "@UnitPrice",
c.fldUnitPrice * c.fldQuantityOrdered AS "@TotalPrice"
FROM @ShoppingCartContents c
INNER JOIN @Products p ON p.fldProductID = c.fldProductID
WHERE c.fldShoppingCartHeaderID = h.fldShoppingCartHeaderID
AND m.fldModuleID = p.fldModuleID
FOR XML PATH('Products'),ROOT('Product'),TYPE
)
FROM @Module m
WHERE EXISTS(SELECT * FROM @ShoppingCartContents c
INNER JOIN @Products p ON p.fldProductID = c.fldProductID
WHERE c.fldShoppingCartHeaderID = h.fldShoppingCartHeaderID
AND m.fldModuleID = p.fldModuleID)
FOR XML PATH('OrderLineItem'),ROOT('OrderLineItems'),TYPE
)
FROM @ShoppingCartHeader h
FOR XML PATH('Order'),TYPE
)
FOR XML PATH('Order_Company'),ROOT('Order_Notification'),TYPE;
____________________________________________________
Deja View - The strange feeling that somewhere, sometime you've optimised this query before
How to get the best help on a forum
http://www.sqlservercentral.com/articles/Best+Practices/61537