この質問に似ていますが、特定の属性に基づいて解析する必要があります。属性値に基づいて、同じ名前の要素を1つだけ選択するにはどうすればよいですか?
DECLARE @doc int
EXEC sp_xml_preparedocument @doc OUTPUT, N'
<rootnode>
<group>
<id>1</id>
<anothernode lang="de">first string</anothernode>
<anothernode lang="en">second string</anothernode>
</group>
<group>
<id>1</id>
<anothernode lang="en">I</anothernode>
<anothernode lang="de">Ich</anothernode>
</group>
</rootnode>'
SELECT *
FROM OPENXML (@doc, 'rootnode/group')
WITH
(
id int 'id',
anothernode varchar(30) 'anothernode'
)
EXEC sp_xml_removedocument @doc
結果は次のとおりです。
1 first string
2 Ich
そして私は必要です:
1 second string
2 I