如何在pl / sql中交换行值 - Oracle?

时间:2012-12-21 17:11:38

标签: oracle plsql

我在PL / SQL中有以下光标:

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

我需要能够编写某种if-else语句来交换origRank IF ,其RegSesRank大于其他RegSesRank }

即。上述内容不会更改,因为7844的{​​{1}}比RegSesRank更高,因此7854不应更改,但是OrigrRank必须在OrigRank转换7854有一个更大的RegSesRank

我希望我很清楚。如果您有任何问题,请告诉我,我真的非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我不会用PL / SQL游标中的if / else语句解决这个问题,因为它引用了查询的其他行。相反,如果需要,我会使用UPDATE将所有origRank更改为新值。

通常的方法是嵌套UPDATE (SELECT ... FROM mytable JOIN ... ) SET origrank = newrank WHERE origrank != newrank。举个例子,我们需要知道@Joe W和@Dour High Arch指出的新等级是如何计算的。