2012-12-21 2 views
-2

I가 PL/SQL에서 다음 커서 : 나는 origRankRegSesRankRegSesRank 다른 것보다 더 큰 경우 값 교환하는 경우 - 다른 문장의 어떤 종류를 쓸 수 있어야pl/sql에서 행 값을 교환하는 방법 - Oracle?

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

7844 따라서 OrigrRank 변경하지 않아야 더 큰 RegSesRank7854보다가 있기 때문에 위의 예

이 변경되지 않습니다, 그러나, OrigRank이 경우 7854에 swaped해야는,551 더 있었다.

나는 분명히했으면 좋겠다. 궁금한 점이 있으면 알려주세요. 귀하의 도움에 정말로 감사드립니다.

+1

열에 행 기준 데이터를 저장하면 관계형 데이터베이스 정규화를 위반하게됩니다. 당신이해야 할 일은 집계 함수를 사용하는 것이지만'OrigRank'와'RegSesRank'가 무엇을 대체 할 것인지 전혀 모른다는 것을 당신이 말하지 않았기 때문에. –

+0

OgiRank 및 RegsesRank 란 무엇입니까? 그들이 어떤 목적으로 봉사하는지 알지 못하면 정답을 줄 수 없을 수도 있습니다. –

답변

0

PL/SQL 커서의 if/else 문으로이 문제를 해결하지는 않습니다. 다른 행의 행을 참조하기 때문에이 문제는 해결되지 않습니다. . 대신, 나는 UPDATE을 사용하여 필요한 경우 모든 origRank를 새 값으로 변경합니다.

일반적인 방법은 중첩 된 UPDATE (SELECT ... FROM mytable JOIN ...) SET origrank = newrank WHERE origrank != newrank입니다. 예를 들어, 우리는 새로운 등급이 @Joe W와 @Dour High Arch가 어떻게 계산되는지 알아야합니다.

관련 문제