2014-12-05 3 views
0

У меня есть следующий запросГенерировать XML из запроса с определением XSD?

select A,B,C,D,E,F,G,H from View1 where A = '....' 

И я хочу, чтобы создать следующий XML. Можно ли использовать Sql Server for XML для этого? Или существует какой-либо другой подход, который может быть реализован на SQL-сервере?

<Root> 
    <A>....</A> <!-- Appear only once --> 
    <B Id="1"> 
    <Type C="..." D="..."> 
     <SubType> 
     <Element E="..." F="...."> 
      <G>...</G> 
      <H>...</H> 
     </Element> 
     ..... 
     </Subtype> 
     .... 
    <Type> 
    ..... 
    </B> 
    <B>..... 
+0

Я пытался 'для XML Path ('Root'),' для XML auto' для модифицированного запроса с несколькими подзапроса и Безразлично «Хорошо. – ca9163d9

ответ

2

да FOR XML PATH может быть использован для получения желаемого результата

declare @test table 
(
A int, 
B int, 
C int, 
D int, 
E int, 
F int, 
G int 
) 

insert into @test values (1,2,3,4,5,6,7) 
insert into @test values (1,3,4,4,5,6,7) 

SELECT 
(SELECT top 1 A from @test WHERE A=1) as 'A/text()', 
( 
     SELECT   
     B as '@id', 
     (SELECT C as '@C', D as '@D', 
       E as 'SubType/Element/@E', F as 'SubType/Element/@F', 
       G as 'SubType/Element/G/text()', 
       F as 'SubType/Element/F/text()' 
     FOR XML PATH('Type'), TYPE 
     ) 
     FROM @test 
     WHERE A =1 
     FOR XML PATH('B'), TYPE 
) 
FOR XML PATH(''), ROOT('ROOT') 
+0

Спасибо. Очень близко. Тем не менее, он генерирует '<Элемент Е = "5" Р = "6"/> ' вместо '<Элемент Е = "5" Р = "6">' ? – ca9163d9

+0

@ dc7a9163d9, обновленный, чтобы охватить это. – radar

Смежные вопросы