Que diriez-vous de ceci (j'ai déclaré @input
être une variable de type de données XML avec votre contenu XML - remplacez en conséquence) :
SELECT
Parent.Elm.value('(@ID)[1]', 'int') AS 'ID',
Parent.Elm.value('(Title)[1]', 'varchar(100)') AS 'Title',
Parent.Elm.value('(Description)[1]', 'varchar(100)') AS 'Description',
Child.Elm.value('(@ID)[1]', 'int') AS 'ChildID',
Child.Elm.value('(Title)[1]', 'varchar(100)') AS 'ChildTitle',
Child.Elm.value('(StartDate)[1]', 'DATETIME') AS 'StartDate',
Child.Elm.value('(EndDate)[1]', 'DATETIME') AS 'EndDate'
FROM
@input.nodes('/ROOT/WrapperElement/ParentElement') AS Parent(Elm)
CROSS APPLY
Parent.Elm.nodes('ChildElement') AS Child(Elm)
Vous parcourez essentiellement tous les /ROOT/WrapperElement/ParentElemet
nœuds (comme Parent(Elm)
pseudo table), et pour chacune de ces entrées, vous faites ensuite un CROSS APPLY
pour les éléments enfants contenus dans ce ParentElement
et extrayez les informations nécessaires.
Devrait fonctionner - j'espère !