select from many to many by matching field within a column
Replace the ??? in your attempted query with

COUNT(DISTINCT Customer.Surname) = 1


So, the whole query, with a couple of improvements, would be

SELECT
  co.OrderID,
  CustomerCount = COUNT(distinct c.CustomerID),
  FamilyName    = MAX(c.Surname)
FROM
  dbo.CustomerOrderLink AS co
  INNER JOIN dbo.Customer AS c ON c.CustomerID = co.CustomerID 
GROUP BY
  co.OrderID
HAVING
  COUNT(DISTINCT c.CustomerID) &gt; 1
  AND COUNT(DISTINCT c.Surname) = 1
;


An inner join would be better here since orders without associated customers would not match the COUNT(DISTINCT c.CustomerID) &gt; 1 condition anyway. Talking of that condition, if the CustomerOrderLink table can never have more than one CustomerID/OrderID pair (and it should not), then you can replace it with COUNT(c.CustomerID) &gt; 1 or even COUNT(*) &gt; 1.

Note that if Customer.Surname is a nullable column and some customers do have a null there, the above may not return what you expect, because COUNT ignores nulls (and so it will return 1 if a group contains a couple of customers with the same surname and the rest without a surname).