2012-07-30 17 views
5

Chciałbym powrócić poniżej xml:Jak używać FOR XML w podzapytaniach?

<ResultDetails> 
<Node1>hello</Node1> 
<Sites> 
<Site><SiteId>1</SiteId></Site> 
<Site><SiteId>2</SiteId></Site> 
</Sites> 
</ResultDetails> 

napisałem poniższy kod, ale nie działa:

SELECT 'hello' AS Node1,  
    (SELECT TOP 2 SiteId 
    FROM [dbo].[Sites] 
     FOR XML PATH('Site')) AS Sites 
FOR XML PATH('ResultDetails') 

ale zwraca:

<ResultDetails> 
    <row> 
    <Node1>hello</Node1> 
    <Sites>&lt;Site&gt;&lt;siteId&gt;102&lt;/siteId&gt;&lt;/Site&gt;&lt;Site&gt;&lt;siteId&gt;1&lt;/siteId&gt;&lt;/Site&gt;</Sites> 
    </row> 
</ResultDetails> 

Co sql czy powinienem napisać?

Dzięki,

Odpowiedz

13

Trzeba dodać modyfikator TYPE do swojego wewnętrznego zapytania:

SELECT 
    'hello' AS Node1 
    , (
     SELECT TOP 2 SiteId 
      FROM [dbo].[Sites] 
     FOR XML PATH('Site'), TYPE 
    ) AS Sites 
FOR XML PATH('ResultDetails') 
+0

to prawda, dzięki. –

Powiązane problemy