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

केस स्टेटमेंट के ELSE में सेलेक्ट का उपयोग करने से मुझे ORA-00937 मिलता है:सिंगल-ग्रुप ग्रुप फंक्शन नहीं

थोड़ा अलग दृष्टिकोण लेना लेकिन यह काम करता प्रतीत होता है। आवरण और गिनती करने के बजाय, बस जांचें कि क्या कुल शून्य है (एक श्रृंखला में पहला गैर-शून्य मान देता है) और यदि यह आपके संदेश को प्रतिस्थापित करता है। यह एक दूसरे स्तर के समूह से बचा जाता है जो मुझे विश्वास नहीं है कि इसकी आवश्यकता है।

बहुत खराब listagg समुच्चय के भीतर भी विशिष्ट का समर्थन नहीं करता है; हम इनलाइन दृश्य से बच सकते हैं।

SELECT coalesce(listagg(A.osuser, ', ') within group (order by A.osuser), 
                'There are no users connected') as userList
FROM (select distinct osuser from v$session) A
WHERE A.osuser!= 'SYSTEM' and A.osuser not like 'VMCONFTEST%'

इसमें ओवरहेड है कि यह उन उपयोगकर्ताओं की एक सूची उत्पन्न करने का प्रयास करता है जो आपका केस स्टेटमेंट शॉर्ट सर्किट करने का प्रयास कर रहा हो सकता है। हालांकि अगर V$session में कोई रिकॉर्ड नहीं है तो चुनिंदा डिफरेंट जल्दी होना चाहिए।

हालांकि ईमानदार होने के लिए मुझे यकीन नहीं है कि हमें ऐसा करने की आवश्यकता क्यों है। सूची में शून्य आम तौर पर एक पर्याप्त प्रतिक्रिया है जो कोई उपयोगकर्ता नहीं दर्शाता है। और UI नल का अर्थ कोई उपयोगकर्ता नहीं संभालेगा।

और भी तेज़ हो सकता है अगर हम इनलाइन व्यू के लिए जहां क्लॉज को और बढ़ा दें..

SELECT coalesce(listagg(A.osuser, ', ') within group (order by A.osuser), 
                'There are no users connected') as userList
FROM (SELECT distinct osuser 
      FROM v$session
      WHERE A.osuser!= 'SYSTEM' 
        and A.osuser not like 'VMCONFTEST%') A


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle स्ट्रीम में लक्ष्य स्कीमा पर ड्रॉप टेबल को रोकना

  2. मेरे पास प्रोग्राम है जिसे मैं तुलना करना चाहता हूं तिथियां लाएं और वांछित डेटा लाएं

  3. RAC VM का बैकअप कैसे लें

  4. SQL सर्वर 2005 से Oracle संग्रहीत कार्यविधि निष्पादित करना

  5. एक और स्कीमा (ओरेकल) पर समानार्थक शब्द बनाने के लिए अनुदान