-1

次のデータを含むテーブルがあります。

列: レベル、クラス、プロパティ、値

データ:

0, 洋服, 靴1, ナイキ

0, 服, 靴2, アディダス

0, 洋服, 靴3, FILA

0, 服, 帽子, トム

1、トレーナー、Dash1、赤

1、トレーナー、Dash2、青

各レベルのデータを含む xml を生成したい (レベルを反復する)。これは私が期待しているものです:

<Root>
 <Level>
   <Clothes>
      <Shoe1>Nike</Shoe1>    
      <Shoe2>Adidas</Shoe2>
      <Shoe3>FILA</Shoe3>
   </Clothes>
   <Clothes>
      <Hat>Tom</Hat>
   </Clothes>
 </Level>
 <Level>
     <Sweatshirt>
         <Dash1>Red</Dash1>             
         <Dash2>Blue</Dash2>
     </Sweatshirt>
 </Level>
</Root>
4

2 に答える 2

0

さて、あなたはこのようなことを試みることができます

select
    cast(
        '<' + T.Class + '>' +
        cast(
            (
                select
                    cast('<' + TT.Property + '>' + TT.Value + '</' + TT.Property + '>' as xml)
                from #MyTable as TT
                where TT.Level = T.Level and TT.Class = T.Class
                for xml path('')
            )
         as nvarchar(max)) +
         '</' + T.Class + '>'
     as xml) as [Level]
from (select distinct TT.Level, TT.Class from #MyTable as TT) as T
for xml path(''), root('Root'), type

sql fiddle demo

このタイプのソリューションが本当に好きというわけではありません。動的 SQL を試すこともできます

于 2012-11-22T07:56:17.477 に答える
0

dbms_xmlgen を使用してみてください

select dbms_xmlgen.getxml('your query') from dual;

すべてのアイテムを反復処理するためにカーソルを使用できます

于 2012-11-22T07:00:47.140 に答える