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

मैं इस क्वेरी के साथ लेखा तालिका के सभी कॉलम प्राप्त करना चाहता हूं लेकिन यह त्रुटि दे रहा है

आपकी क्वेरी में खंड दर समूह है। यदि आप क्वेरी में क्लॉज द्वारा समूह का उपयोग करते हैं, तो चयन कथन में प्रत्येक कॉलम को दो चीजों में से एक करना होता है - या तो इसे समूह द्वारा सूची का हिस्सा होना चाहिए, या इसे किसी प्रकार का कुल होना चाहिए (योग , गणना, औसत, अधिकतम, आदि)। यदि आप ऐसा नहीं करते हैं, तो SQL को नहीं पता कि कॉलम के साथ क्या करना है। आपके मामले में Accounts.regno और Accounts.model चयन में सूचीबद्ध हैं, लेकिन वे समूह द्वारा समूह में नहीं हैं और वे समुच्चय नहीं हैं - इसलिए आपकी त्रुटि।

मान लें कि आपके पास एक ही खाता नाम और slacc के साथ दो खाता रिकॉर्ड हैं, लेकिन अलग-अलग रेग्नो (या मॉडल) हैं। क्लॉज द्वारा समूह का कहना है कि उन्हें प्रदर्शन के लिए एक रिकॉर्ड में शामिल होना है, लेकिन आपने एसक्यूएल को यह नहीं बताया है कि यह कैसे करें। इससे कोई फर्क नहीं पड़ता कि डेटा ऐसा नहीं है, SQL पहले संभावित त्रुटियों की तलाश करता है।

इस मामले में, आप शायद सभी विवरणों को समूहीकृत करना चाहते हैं। सबसे आसान तरीका यह है कि आप इस तरह से समूह में आवश्यक सभी कॉलम जोड़ना सुनिश्चित करें

select Accounts.name, Accounts.regno, Accounts.model, Accounts.slacc, count(servicing.dt) as total 
from Accounts 
   left outer join servicing on Accounts.slacc = servicing.slacc 
group by Accounts.slacc, Accounts.name, Accounts.regno, Accounts.model

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

select Accounts.name, Accounts.regno, Accounts.model, Accounts.slacc, Totals.Total 
from Accounts
   left outer join 
     ( Select slacc, count(dt) as total
       from servicing
       group by slacc
     ) Totals on Totals.slacc = Accounts.slacc



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. किसी भी प्राथमिक कुंजी को अनदेखा करते हुए SQL सर्वर में डुप्लिकेट पंक्तियों को खोजने के 7 तरीके

  2. SQL क्वेरी में क्लॉज़ से दो कैसे हो सकते हैं?

  3. Sql सर्वर प्रतिकृति को सर्वर से कनेक्शन बनाने के लिए वास्तविक सर्वर नाम की आवश्यकता होती है

  4. पैरामीटर के रूप में SQL स्थानिक प्रकार के साथ डैपर का उपयोग करना

  5. SQL DELETE प्रदर्शन