0

データベース内の計算を表すオブジェクトのシリアル化をもたらす次の問題を解決しようとしています。レポート目的でクエリを実行しようとしていますが、XML 階層の別の部分で同じ位置にあるノードを見つける必要があります (これらは、オブジェクトのシリアル化string[]double[]属性に由来します)。たとえば、私は次のようなものを持っています

...<parent>
      <Names>
        <string>Name1</string>
        <string>Name2</string>
        <string>Name3</string>
      </Names>

and

...<parent>
      <Weights>
         <double>0.5</double>
         <double>0.13</double>
         <double>0.2</double>
      </Weights>

オブジェクトを逆シリアル化するのではなく、SQL でクエリを実行できるように、XML BLOB をクエリして各 XML BLOB の名前と重みのペアを取得できるようにしたいと考えています。名前と重みを引き出すことができますが、それらを組み合わせると、それらを位置的に一致させるのに苦労しているため、交差したクエリになります。答えはおそらく、名前用と重み用の2つのビューを作成し、それらを位置で結合することだと思いましたが、のようなものでない限り、クエリでは position() を使用できません[position() < 6]

4

1 に答える 1

0

2 つの個別のビューを作成してから、集約ビューを作成することで問題を解決しました。使った

ROW_NUMBER() OVER(PARTITION BY Id ORDER BY Id) as ItemPosition

各クエリ/ビューの列の 1 つとして。次に、Id と ItemPosition に参加しました。それが最善の方法であるかどうかはわかりませんが、少なくとも関連するアイテムを一致させています.

于 2011-04-04T00:54:06.597 に答える