-2
<abc id="abc1">
  <def id="def1">
    <ghi att='ghi1'>
      <mn id="0742d2ea" name="RF"  dt="0" df="3" ty="0" />
      <mn id="64d9a11b" name="CJ"  dt="0" df="3" ty="0" />
      <mn id="db72d154" name="FJ"  dt="2" df="4" ty="0" />
      <mn id="39af9fa1" name="BS"  dt="0" df="2" ty="0" />
    </ghi>
    <jkl  att='jkl1'>
       <mn id="0742d2ea" name="RF" dt="1" gl="19" />
       <mn id="64d9a11b" name="CJ" dt="0" gl="6" />
       <mn id="db72d154" name="FJ" dt="0" gl="0" />
       <mn id="39af9fa1" name="BS" dt="0" gl="12" />
       <mn id="ac4f566f" name="DJ" dt="0" gl="9" />
       <mn id="4bf3ba2f" name="RP" dt="0" gl="16" />
       <mn id="db1af021" name="SC" dt="1" gl="10" />
       <mn id="c4c93a2d" name="DN" dt="1" gl="15" />
    </jkl>
  </def>
</abc>

I need this output. Is this possible in SQL Server 2008?

id          name ghiDT  ghiDF   ghiTY   jklDT   jklGL
0742d2ea    RF  0   3   0   1   19
64d9a11b    CJ  0   3   0   0   6
db72d154    FJ  2   4   0   0   0
39af9fa1    BS  0   2   0   0   12
ac4f566f    DJ  0   0   0   0   9
4bf3ba2f    RP  0   0   0   0   16
db1af021    SC  0   0   0   1   10
c4c93a2d    DN  0   0   0   1   15
4

1 に答える 1

0

クロス集計が適用される場所がよくわかりません。nodes()XML をシュレッドするために、各グループのノードを個別にクエリする必要があります。次に、full outer joinon idand useを実行して、 and列の最初の非値をcoalesce確実に取得できます。また、coalesce を使用して、他の列の代わりにa を取得する必要があります。nullidname0null

SEデータ

于 2012-04-14T07:45:23.637 に答える