The problem is that you are grouped by version_id. If your result does not have a version_id value, it cannot count.
Instead, you can select all cities with their version identifier, leave it in the list, and then make isnull:
WITH CITIES AS ( SELECT 6 AS edition_id, 'DELHI' As CityName UNION SELECT 50, 'AHMEDABAD' UNION .... ) SELECT c.cityname, isnull(counts.total,0) as total FROM CITIES LEFT JOIN (SELECT edition_id, count(*) as Total
source share