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

ORA-00937:एकल-समूह समूह फ़ंक्शन नहीं - क्वेरी त्रुटि

हो सकता है कि आपने इसे अधिकतम . के साथ ठीक कर दिया हो लेकिन ऐसा नहीं है क्यों यह हो रहा है और थोड़ा हैकी है। आपकी समस्या यह है कि आपकी उप-क्वेरी, जो एकल कॉलम में बदल जाती है, एक समग्र क्वेरी नहीं है, मिनट , अधिकतम , योग आदि और इसलिए एक समूह द्वारा . में शामिल करने की आवश्यकता है खंड। आपने इसे अधिकतम . में लपेट कर इसे ठीक किया है क्योंकि अधिकतम एकल मान हमेशा स्थिर रहेगा।

हालाँकि, जैसा कि आपकी उप-क्वेरी, स्वयं, एक विश्लेषणात्मक क्वेरी है और केवल एक पंक्ति लौटाएगी, स्पष्ट बात यह है कि इसे अपनी क्वेरी में जोड़ने के लिए कार्टेशियन जॉइन का उपयोग करना है। स्पष्ट जुड़ाव सिंटैक्स में इसे क्रॉस जॉइन

select count(*) todas
     , sum(case when i.prioridade = 1 then 1 else 0 end) urgente
     , sum(case when i.prioridade = 2 then 1 else 0 end) alta
     , sum(case when i.prioridade = 3 then 1 else 0 end) normal
     , sum(case when i.prioridade = 4 then 1 else 0 end) baixa
     , naoAvaliados
     , sum(case when i.situacao = 'P' then 1 else 0 end) pendentes
     , sum(case when i.situacao = 'A' or i.situacao = 'I' then 1 else 0 end) iniciados
  from GMITEMOS i 
 cross join (select count(*) as naoAvaliados
               from GMITEMOS j
              inner join GMCTLSLA k
                 on k.os = j.cd_numero_os 
                and k.item = j.item
              where j.situacao in ('A', 'I', 'P')
                and k.ordem = 99999
                    )
 where i.situacao in ('A', 'I', 'P')
   and exists (select 1 
                 from GMCTLSLA c 
                where c.os = i.cd_numero_os 
                  and c.item = i.item
                      )

कार्टेशियन जॉइन की खराब प्रतिष्ठा है क्योंकि यह जुड़ने के एक तरफ पंक्तियों की संख्या को दूसरी तरफ पंक्तियों की संख्या से गुणा करता है। हालाँकि, इसके उपयोग हैं, विशेष रूप से इस तरह के मामले में।



  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 SQL नमूना डेटाबेस

  2. कैसे जांचें कि संग्रहीत प्रक्रिया मौजूद है या नहीं?

  3. Oracle के लिए एंटिटी फ्रेमवर्क संगत प्रदाताओं की तुलना?

  4. एक ही चयन में कॉलम उपनाम का प्रयोग करें

  5. शेल स्क्रिप्ट के माध्यम से संग्रहीत कार्यविधि के परिणाम को कैसे कैप्चर करें?