Given this XML:
DECLARE @input XML = '<Data>
<Tab Name="UserData">
<Row>
<BeneficialOwnerName>Fred Flintstone</BeneficialOwnerName>
<TaxID>111-11-1111</TaxID>
</Row>
<Row>
<BeneficialOwnerName>Barney Rubble</BeneficialOwnerName>
<TaxID>222-22-2222</TaxID>
</Row>
</Tab>
<Tab Name="OtherData">
<Row>
<BeneficialOwnerName>Bugs Bunny</BeneficialOwnerName>
<TaxID>333-33-3333</TaxID>
</Row>
<Row>
<BeneficialOwnerName>Road Runner</BeneficialOwnerName>
<TaxID>444-44-4444</TaxID>
</Row>
</Tab>
</Data>'
I'd like to return this:
Name BeneficialOwnerName TaxID
UserData Fred Flintstone 111-11-1111
UserData Barney Rubble 222-22-2222
OtherData Bugs Bunny 333-33-3333
OtherData Road Runner 444-44-4444
My SQL looks like this:
SELECT
Name = XCol.value('@Name','varchar(25)'),
BeneficialOwnerName = XCol.value('BeneficialOwnerName[1]','varchar(25)'),
TaxID = XCol.value('TaxID[1]','varchar(25)')
FROM
@input.nodes('/Data/Tab/Row') AS XTbl(XCol)
But depending on how I tweak the FROM clause I get either two rows of Tab names or 4 rows of data with the tab name Null
What do I need to do to get the data shown?
Thanks
Carl