2012-07-30 13 views
5

vorrei restituire il xml di seguito:Come utilizzare FOR XML in sottoquery?

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

ho scritto il codice qui sotto, ma non funziona:

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

ma restituisce:

<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> 

Cosa sql dovrei scrivere?

grazie,

risposta

13

è necessario aggiungere il modificatore TYPE alla tua richiesta interna:

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

che è di destra, grazie. –