Вы можете выполнить то, что вы хотите, используя LEFT JOIN
. MS Access затрудняет учет различий, поэтому он, вероятно, делает то, что вам нужно:
SELECT o.fk_OpeningTypeId, Count(oc.OpeningCityID) AS CountOfPosition
FROM tblOpening as o LEFT JOIN
(SELECT oc.*
FROM tblOpeningCity oc
WHERE oc.OpeningCity IN ("Livermore", "Pleasanton")
) as oc
ON oc.OpeningCityID = o.City
WHERE o.Position = "Flex Officer" AND
o.Closed = No
GROUP BY o.fk_OpeningTypeId;
Возможно, фильтры на o
удаляют то, что вы хотите. Если это так, то условное агрегирование исправит это:
SELECT o.fk_OpeningTypeId,
SUM(IIF(oc.OpeningCityID IS NOT NULL AND
o.Position = "Flex Officer" AND
o.Closed = No, 1, 0)
) AS CountOfPosition
FROM tblOpening as o LEFT JOIN
(SELECT oc.*
FROM tblOpeningCity oc
WHERE oc.OpeningCity IN ("Livermore", "Pleasanton")
) as oc
ON oc.OpeningCityID = o.City
GROUP BY o.fk_OpeningTypeId;
Образец базы данных Access