SQL XML XQuery分解为完全封装的单独行

时间:2019-02-25 19:58:16

标签: sql xml xquery

我似乎无法解决返回完全封装的切细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>

0 个答案:

没有答案