クエリに group by 句があります。クエリで group by 句を使用する場合、select ステートメントのすべての列は、group by リストの一部である必要があるか、何らかの集計 (Sum 、カウント、平均、最大など)。これを行わないと、SQL は列の処理方法を認識できません。あなたの場合、Accounts.regno と Accounts.model は select にリストされていますが、group by 句には含まれておらず、集計でもありません - したがって、エラーです。
差し当たり、アカウント名と slacc が同じで Regno (またはモデル) が異なる 2 つのアカウント レコードがあるとします。 group by 句は、表示のために 1 つのレコードに結合する必要があることを示していますが、その方法を SQL に指示していません。データがそうでなくても問題ありません。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