-2

PL/SQL に次のカーソルがあります。

ID     Team     OrigRank     RegSesRank
7844   XXX      2            8
7854   YYY      1            1

他の値よりも大きい場合に値origRankを交換するために、ある種の if-else ステートメントを記述できる必要がありますRegSesRankRegSesRank

つまり、上記は変更されませんよりも7844大きい があるため、変更すべきではありませんが、より大きな があった場合は交換する必要があります。RegSesRank7854OrigrRankOrigRank7854RegSesRank

私がはっきりしていたことを願っています。ご不明な点がございましたら、お気軽にお問い合わせください。ご協力をお願いいたします。

4

1 に答える 1

0

この問題は、PL/SQL カーソルの if/else ステートメントでは解決できません。クエリの他の行を参照するからです。代わりに、UPDATE必要に応じて、すべての origRank を新しい値に変更するために使用します。

通常の方法は、ネストされたUPDATE (SELECT ... FROM mytable JOIN ... ) SET origrank = newrank WHERE origrank != newrank. 例を挙げると、@Joe W と @Dour High Arch が指摘したように、新しいランクがどのように計算されるかを知る必要があります。

于 2012-12-22T16:09:50.407 に答える