Вы просто не освоили group by. Те поля (или хитровычисляемые значения), которые не получены при помощи агрегированных функций, используемые в select и требуют группировки, нужно прописать в group by.
Чтобы count считал уникальные значения по конечной выборке, не по числу строк, в него прописывают поле или выражение, которое будет определять, как идентифицировать уникальную часть выборки.
SELECT O.CustomerID, C.ContactName, Count(distinct Od.ProductID) as Product_Unique_Count
FROM Orders as O
join Custimers as C on O.CustomerID = C.CustomerID
join [Order Details] as Od on Od.OrderID = O.OrderID
WHERE YEAR(O.OrderDate) = 1995
group by O.CustomerID, C.ContactName