La tua query ha una clausola group by. Se si utilizza una clausola group by nella query, ogni colonna nell'istruzione select deve fare una delle due cose:o deve far parte dell'elenco group by o deve essere un aggregato di qualche tipo (Sum , Conteggio, Media, Max, ecc.). Se non lo fai, SQL non sa cosa fare con la colonna. Nel tuo caso Accounts.regno e Accounts.model sono elencati nella selezione, ma non sono nel gruppo per clausola e non sono aggregati, da qui il tuo errore.
Supponiamo per il momento di avere due record di account con lo stesso nome account e slacc, ma Regno (o modello) diverso. La clausola group by dice che devono essere uniti in un record per la visualizzazione, ma non hai detto a SQL come farlo. Non importa se i dati non sono così, SQL cerca prima possibili errori.
In questo caso, probabilmente vuoi solo raggruppare tutti i dettagli. Il modo più semplice è assicurarsi di aggiungere tutte le colonne necessarie al gruppo, in questo modo
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
Questo risolverà l'errore, ma fa un raggruppamento extra che non ti serve e diventerebbe molto ingombrante se avessi molte più colonne che volevi dall'account, poiché dovresti aggiungerle tutte. Un altro modo per gestirlo consiste nell'utilizzare la quantità minima di colonne per la query di gruppo, quindi unire il risultato alla query principale per ottenere le altre colonne. Probabilmente assomiglierebbe a questo
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