CREATE TABLE
INSERT INTO
SELECT 1, 'Pending'
UNION ALL
SELECT 2, 'Active'
CREATE TABLE [
INSERT INTO [
SELECT 1, 1
UNION ALL
SELECT 2, 1
UNION ALL
SELECT 3, 3
UNION ALL
SELECT 4, 2
QUERY
1. Id ( )
;WITH CTE(orderid,orderpartid) AS
(
SELECT ODR.id orderid ,ODRP.Id orderpartid
FROM
CROSS JOIN [
)
,CTE2 AS
(
select
(
select t1.orderid as 'order/@Id',
(
SELECT T.orderpartid '@orderid'
FROM CTE T
WHERE T.orderid=t1.orderid
FOR XML PATH('orderpart'), type
)as 'order/orderparts'
from CTE t1
group by t1.orderid
for xml path(''), root('orders')
)XMLDATA
)
select CAST(XMLDATA AS XML)
FROM CTE2
for xml path('application')

2. Id
;WITH CTE(orderid,orderpartid) AS
(
SELECT ODR.id orderid ,ODRP.Id orderpartid
FROM
JOIN [
)
,CTE2 AS
(
select
(
select t1.orderid as 'order/@Id',
(
SELECT T.orderpartid '@orderid'
FROM CTE T
WHERE T.orderid=t1.orderid
FOR XML PATH('orderpart'), type
)as 'order/orderparts'
from CTE t1
group by t1.orderid
for xml path(''), root('orders')
)XMLDATA
)
select CAST(XMLDATA AS XML)
FROM CTE2
for xml path('application')
