Я не могу обработать запрос, который возвращает полностью инкапсулированный измельченный 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>