Bagaimana dengan ini (saya mendeklarasikan @input menjadi variabel tipe data XML dengan konten XML Anda - ganti yang sesuai):
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)
Anda pada dasarnya mengulangi semua /ROOT/WrapperElement/ParentElemet node (sebagai Parent(Elm) pseudo table), dan untuk setiap entri tersebut, Anda kemudian melakukan CROSS APPLY untuk elemen anak yang terkandung di dalam ParentElement dan ambil informasi yang diperlukan.
Harus bekerja - saya harap!