Ihre Abfrage enthält eine Gruppieren-nach-Klausel. Wenn Sie eine group by-Klausel in der Abfrage verwenden, muss jede Spalte in der select-Anweisung eines von zwei Dingen tun – entweder muss sie Teil der group by-Liste sein, oder sie muss eine Art Aggregat sein (Sum , Anzahl, Durchschnitt, Max usw.). Wenn Sie dies nicht tun, weiß SQL nicht, was mit der Spalte geschehen soll. In Ihrem Fall sind Accounts.regno und Accounts.model in der Auswahl aufgeführt, aber sie sind nicht in der group by-Klausel und sie sind keine Aggregate - daher Ihr Fehler.
Angenommen, Sie haben zwei Kontodatensätze mit demselben Kontonamen und slacc, aber unterschiedlichem Regno (oder Modell). Die group by-Klausel besagt, dass sie zur Anzeige zu einem Datensatz zusammengefasst werden müssen, aber Sie haben SQL nicht gesagt, wie das geht. Es macht nichts, wenn die Daten nicht so sind, SQL sucht zuerst nach möglichen Fehlern.
In diesem Fall möchten Sie wahrscheinlich nur alle Details gruppieren. Am einfachsten ist es, sicherzustellen, dass Sie alle benötigten Spalten zur Gruppe hinzufügen, wie hier
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
Dies behebt den Fehler, führt jedoch eine zusätzliche Gruppierung durch, die Sie nicht benötigen, und würde sehr umständlich werden, wenn Sie viel mehr Spalten hätten, die Sie vom Konto haben möchten, da Sie sie alle hinzufügen müssten. Eine andere Möglichkeit, dies zu handhaben, besteht darin, die minimale Anzahl von Spalten für die Gruppenabfrage zu verwenden und dann das Ergebnis davon mit Ihrer Hauptabfrage zu verbinden, um die anderen Spalten zu erhalten. Das würde wahrscheinlich ungefähr so aussehen
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