आपकी क्वेरी में खंड दर समूह है। यदि आप क्वेरी में क्लॉज द्वारा समूह का उपयोग करते हैं, तो चयन कथन में प्रत्येक कॉलम को दो चीजों में से एक करना होता है - या तो इसे समूह द्वारा सूची का हिस्सा होना चाहिए, या इसे किसी प्रकार का कुल होना चाहिए (योग , गणना, औसत, अधिकतम, आदि)। यदि आप ऐसा नहीं करते हैं, तो 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