我似乎无法解决返回完全封装的切细xml的查询。
这将使我非常接近,但是缺少父节点以及第二级(L1ID,L1Name)中的任何内容
drop table #temp
Declare @xmlContent xml
set @xmlContent = cast('<Jobs><L1ID>151</L1ID><L1Name>Roles</L1Name><L1Data><L2ID>17</L2ID>
<L2Name>Advisor</L2Name><L2Data><L3ID>1</L3ID><L3Name>Advise stuff</L3Name></L2Data></L1Data><L1Data>
<L2ID>18</L2ID><L2Name>Carpentor</L2Name><L2Data><L3ID>2</L3ID><L3Name>Carpentor stuff</L3Name>
</L2Data></L1Data><L1Data><L2ID>18</L2ID><L2Name>Laborer</L2Name><L2Data><L3ID>5</L3ID>
<L3Name>Laborer stuff</L3Name></L2Data></L1Data></Jobs>' as XML)
Select @xmlContent as xmlContent
into #temp
SELECT
c.query('.')
FROM
#temp
CROSS APPLY
xmlcontent.nodes('/Jobs/L1Data') as T (C)
原始XML
<Jobs>
<L1ID>151</L1ID>
<L1Name>Roles</L1Name>
<L1Data>
<L2ID>17</L2ID>
<L2Name>Advisor</L2Name>
<L2Data>
<L3ID>1</L3ID>
<L3Name>Advise stuff</L3Name>
</L2Data>
</L1Data>
<L1Data>
<L2ID>18</L2ID>
<L2Name>Carpentor</L2Name>
<L2Data>
<L3ID>2</L3ID>
<L3Name>Carpentor stuff</L3Name>
</L2Data>
</L1Data>
<L1Data>
<L2ID>18</L2ID>
<L2Name>Laborer</L2Name>
<L2Data>
<L3ID>5</L3ID>
<L3Name>Laborer stuff</L3Name>
</L2Data>
</L1Data>
</Jobs>
所需结果集(返回行)
Row 1
<Jobs> --<-- Required but missing
<L1ID>151</L1ID> --<-- Required but missing
<L1Name>Roles</L1Name> --<-- Required but missing
<L1Data>
<L2ID>17</L2ID>
<L2Name>Advisor</L2Name>
<L2Data>
<L3ID>1</L3ID>
<L3Name>Advise stuff</L3Name>
</L2Data>
</L1Data>
</Jobs>
Row 2
<Jobs>
<L1Data>
<L2ID>18</L2ID>
<L2Name>Carpentor</L2Name>
<L2Data>
<L3ID>2</L3ID>
<L3Name>Carpentor stuff</L3Name>
</L2Data>
</L1Data>
</Jobs>
Row 3
<Jobs>
<L1Data>
<L2ID>18</L2ID>
<L2Name>Laborer</L2Name>
<L2Data>
<L3ID>5</L3ID>
<L3Name>Laborer stuff</L3Name>
</L2Data>
</L1Data>
</Jobs>