これはどうですか( @input
宣言しました) XML コンテンツを含む XML データ型変数になります - それに応じて置き換えてください):
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)
プレ>基本的にすべての
/ROOT/WrapperElement/ParentElemet
を反復処理します ノード (Parent(Elm)
として) 疑似テーブル)、そしてそれらの各エントリに対して、CROSS APPLY
を実行します。 そのParentElement
内に含まれる子要素 必要な情報を抽出します。うまくいくはずです - 願っています!