2011-06-10 3 views
4

J'ai une donnée XML qui ressemble à ci-dessous.Requête variable @xml pour obtenir un ensemble de lignes

DECLARE @XmlContent XML 
SET @XmlContent = 
'<Entities> 
<Entity type = "5"> 
     <item id ="1"/> 
     <item id ="2"/> 
     <item id ="2"/> 
</Entity> 
<Entity type = "6"> 
     <item id ="3"/> 
     <item id ="4"/> 
     <item id ="5"/> 
</Entity> 
</Entities>' 

Je veux sélectionner les données de ce et l'insérer dans une table dans le format suivant -

 
------------ 
Type Id 
------------ 
5  1 
5  2 
5  2 
6  3 
6  4 
6  5 

Quelqu'un peut me aider à écrire requête à cet effet dans sql server?

Répondre

4
select 
    ent.value('@type', 'int') as Type, 
    row.value('@id', 'int') as ID 
from 
    @XmlContent.nodes('/Entities/Entity') foo(ent) 
    cross apply ent.nodes('item') bar(row) 
Questions connexes