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!