Twoje zapytanie zawiera klauzulę group by. Jeśli w zapytaniu użyjesz klauzuli group by, to każda kolumna w instrukcji select musi wykonać jedną z dwóch rzeczy - albo musi być częścią listy group by, albo musi być pewnego rodzaju agregatem (Sum , liczba, średnia, maksymalna itd.). Jeśli tego nie zrobisz, SQL nie będzie wiedział, co zrobić z kolumną. W twoim przypadku Accounts.regno i Accounts.model są wymienione w zaznaczeniu, ale nie znajdują się w klauzuli group by i nie są agregacjami - stąd Twój błąd.
Załóżmy na razie, że masz dwa rekordy konta z tą samą nazwą konta i slacc, ale z innym Regno (lub modelem). Klauzula group by mówi, że muszą one zostać połączone w jeden rekord do wyświetlenia, ale nie powiedziałeś SQLowi, jak to zrobić. Nie ma znaczenia, jeśli dane nie są takie, SQL najpierw szuka możliwych błędów.
W takim przypadku prawdopodobnie chcesz po prostu zgrupować wszystkie szczegóły. Najprostszym sposobem jest upewnienie się, że wszystkie kolumny potrzebne do grupy są dodawane w następujący sposób
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
To naprawi błąd, ale spowoduje dodatkowe grupowanie, którego nie potrzebujesz, i byłoby bardzo kłopotliwe, gdybyś miał dużo więcej kolumn, które chciałbyś z konta, ponieważ musiałbyś dodać je wszystkie. Innym sposobem radzenia sobie z tym jest użycie minimalnej liczby kolumn dla zapytania grupowego, a następnie połączenie wyniku tego z zapytaniem głównym, aby uzyskać inne kolumny. To prawdopodobnie wyglądałoby mniej więcej tak
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