次のようなテーブルがあります。
CREATE TABLE CustomerXmlData
(CustomerId int,
CustomerData xml)
CustomerId はメインの顧客テーブルにリンクし、CustomerData は次のような xml ドキュメントです。
<Person>
<Product>
<Name>ABC</Name>
<Value>500</Value>
</Product>
<Product>
<Name>XYZ</Name>
<Value>600</Value>
</Product>
</Person>
そのような行は数十万あります。擬似コードでやりたいことは、「where = 'XYZ' の平均Value
を求める」です。Product
Name
要素の属性に基づいて、またはドキュメント内で一意の親を持つことに基づいて値を取得する方法は知っていますが、この状況ではどちらも役に立ちません。Name
必要なものを見つけて、次の兄弟の値を取得できるものは何も見つかりません。
エッジ テーブルを使用FOR XML
して作成することはできますが、カーソルを使用してそれをループする必要がありますか? より効率的な解決策を期待しています。