I have this query:
DECLARE @XML XML =
'<det nItem="1">
<prod>
<cProd>222</cProd>
</prod>
</det>
<det nItem="2">
<prod>
<cProd>888</cProd>
</prod>
</det>'
SELECT
det.value('@nItem', 'varchar(max)') as nItem,
det_prod.value('(cProd)[1]', 'varchar(max)') as cProd
FROM
@XML.nodes('/det') AS det(det),
@XML.nodes('/det/prod') AS det_prod(det_prod)
It returns this result set:
nItem cProd
-------------
1 222
1 888
2 222
2 888
but I want this returned like this:
nItem cProd
-------------
1 222
2 888
Is there a way to do it without parse each <det> as a single xml?