पता नहीं क्या यह सरल के रूप में योग्य है:
order by
case
when currency = 'USD' then 1
when currency = 'BHT' then 2
when currency = 'JPY' then 3
when currency = 'MYR' then 4
else 5
end
या थोड़ा अधिक कॉम्पैक्ट लेकिन Oracle विशिष्ट:
order by decode(currency, 'USD', 1, 'BHT', 2, 'JPY', 3, 'MYR', 4, 5)
क्रमबद्ध क्रम को परिभाषित करने के लिए संख्याओं का उपयोग करने वाला उपरोक्त समाधान स्वचालित रूप से उन मुद्राओं को सही ढंग से सॉर्ट नहीं करेगा जिनका उल्लेख केस/डिकोड अभिव्यक्ति में नहीं किया गया है।
केवल USD को सबसे आगे रखने और बाकी की परवाह न करने के लिए, "जेनरेट" ऑर्डर मानदंड एक वर्ण मान भी होना चाहिए। आप उस स्थिति में निम्नलिखित का उपयोग कर सकते हैं:
order by
case
when currency = 'USD' then '001'
else currency
end
जो "वर्णमाला" क्रम का उपयोग करता है। यह काम करता है क्योंकि वर्णों को संख्या अंकों के बाद क्रमबद्ध किया जाता है। ('AAA'
. का प्रयोग करते हुए '001'
. के बजाय भी काम करेगा)।