При группировании по разделу запроса необходимо указать все столбцы, которые появляются вне агрегата, например COUNT. Вам не хватает ContactName здесь. Фиксированная версия:
select orders.CustomerID, customers.ContactName , count(*)
from Orders
left join customers on Customers.CustomerID= Orders.customerid
group by Orders.customerid, customers.ContactName;
В качестве альтернативы вы можете сгруппировать только по идентификатору, а затем сделать соединение следующим образом:
With OrderCounts AS
(
select orders.CustomerID , count(*) AS OrderCount
from Orders
group by Orders.customerid
)
SELECT OrderCounts.CustomerID
, customers.ContactName
, OrderCounts.OrderCount
FROM OrderCounts
left join customers on Customers.CustomerID= OrderCounts.CustomerID
Первая версия короче и ее проще вводить. В некоторых сценариях вторая версия будет работать быстрее, так как группировка выполняется в одной таблице и столбце.
Чтобы вторая дала одинаковые результаты, CustomerID должен быть уникальным в таблице клиентов, в противном случае он будет создавать дубликаты (нов этом случае в первом примере количество заказов будет удвоено).