Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle SQL में कस्टम ऑर्डर

पता नहीं क्या यह सरल के रूप में योग्य है:

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' . के बजाय भी काम करेगा)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PL/SQL ORA-01422:सटीक फ़ेच रिटर्न अनुरोधित पंक्तियों की संख्या से अधिक है

  2. Oracle में LPAD () फ़ंक्शन

  3. Oracle PL/SQL स्ट्रिंग तुलना समस्या

  4. लॉग () Oracle में समारोह

  5. TO_DSINTERVAL () Oracle में फ़ंक्शन