Get count of near points based on 2 unrelated tables
simply want to get cities with number of listings near it as the count.

Then don't GROUP BY listingid eg
DECLARE @distance FLOAT = 100000;
SELECT c.name CityName, count(l.ListingID) Listings 
FROM listings l, Cities c
WHERE l.Location.STDistance(c.Location) &lt;= @distance
GROUP BY c.name

Or you might try something like:
DECLARE @distance FLOAT = 100000;
SELECT c.name CityName, 
(
  select count(*) 
  FROM listings l
  WHERE c.Location.STDistance(l.Location) &lt;= @distance
) Listings
FROM Cities c