-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

尝试使用 dbms_xmlgen

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

您可以使用光标遍历每个项目

于 2012-11-22T07:00:47.140 回答
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 回答