You need to add an extra tag level in the universal table.First, here's an example that will work against the Northwind database.SELECT 1 as Tag,NULL as Parent,NULL as [Root!1],NULL as [Customer!2!CustomerID],NULL as [Order!3!OrderID]UNION ALLSELECT 2 , 1 , NULL, Customers.CustomerID , NULL FROM CustomersUNION ALLSELECT 3, 2, NULL, Customers.CustomerID, Orders.OrderIDFROM CustomersINNER JOIN Orders ON Customers.CustomerID = Orders.CustomerIDORDER BY [Customer!2!CustomerID], [Order!3!OrderID]FOR XML EXPLICIT
You didn't give your table structures so for your data I'm guessing, but something like this should point you in the right direction.SELECT 1 as Tag,NULL as Parent,NULL as [OrderSummaries!1],NULL as [OrderSummary!2!OrderID],NULL as [OrderSummary!2!CheckoutTime],NULL as [OrderLine!3!CatalogueItemReference],NULL as [OrderLine!3!Price],NULL as [OrderLine!3!Quantity],NULL as [OrderLine!3!DescriptionText],NULL as [OrderLine!3!ActionedDateTime],NULL as [OrderLine!3!Status]UNION ALLSELECT 2 , 1 , NULL, OrderSummary.OrderID, OrderSummary.CheckoutTime, NULL, NULL, NULL, NULL, NULL, NULLFROM OrderSummaryUNION ALLSELECT 3, 2, NULL, OrderSummary.OrderID, NULL, OrderLine.CatalogueItemReference, OrderLine.Price, OrderLine.Quantity, OrderLine.DescriptionText, OrderLine.ActionedDateTime, OrderLine.StatusFROM OrderSummaryINNER JOIN OrderLine ON OrderSummary.OrderID = OrderLine.OrderIDORDER BY [OrderSummary!2!OrderID], [OrderLine!3!CatalogueItemReference]FOR XML EXPLICIT