एक CASE
बयान मदद कर सकता है। इस उदाहरण में:
source
, सैम, 8वें स्थान पर हैtarget
, बॉब, दूसरे स्थान पर है
वेरिएबल्स को वास्तविक मानों से बदलकर, निम्न कथन स्रोत से सब कुछ नीचे 2 स्थानांतरित कर देता है, सदस्यों के बीच छोड़ देता है, लक्ष्य को स्रोत के बराबर सेट करता है, बाकी को नीचे ले जाता है:
postgres=> SELECT * FROM test order by sortval;
name | sortval
------+---------
bob | 2
tom | 4
mary | 6
sam | 8
tim | 10
(5 rows)
postgres=> UPDATE test
postgres-> SET sortval = CASE WHEN sortval <= 2 THEN sortval - 2
postgres-> WHEN sortval = 8 THEN 2
postgres-> WHEN sortval >= 8 THEN sortval - 2
postgres-> ELSE sortval
postgres-> END;
UPDATE 5
postgres=> SELECT * FROM test order by sortval;
name | sortval
------+---------
bob | 0
sam | 2
tom | 4
mary | 6
tim | 8
(5 rows)
वह सूची में कुछ ऊपर ले जाएगा। सूची को नीचे ले जाने के लिए इसी तरह के तर्क को लागू किया जा सकता है। और यह मानता है कि ऋणात्मक संख्याएँ ठीक हैं कि केवल सापेक्ष क्रम रुचि का है।