Это потому, что ваш подзапрос выполняется в исходных таблицах, которые имеют более одного кортежа bc.brc_id, sc.stf_first_name, sc.stf_last_name. Если вы хотите рассчитывать на сгруппированные данные, используйте SUM CASE WHEN или SUM IIF следующим образом:
SELECT b.brc_id AS 'Branch ID',
s.stf_first_name AS 'Manager First Name',
s.stf_last_name AS 'Manager Last Name',
SUM(IIF(s.stf_position = 'Supervisor', 1, 0)) AS
'Number of Supervisor',
SUM(IIF((s.stf_position = 'Staff') AND (s.stf_gender = 'Male'), 1, 0)) AS 'Male
Staff',
SUM(IIF((s.stf_position = 'Staff') AND (s.stf_gender = 'Female'), 1, 0)) AS 'Female Staff'
FROM
BRANCH_T b, STAFF_T s
WHERE
(b.brc_id = s.stf_brc_id) AND (b.brc_manager = s.stf_id)
GROUP BY
b.brc_id, s.stf_first_name, s.stf_last_name
И второе, условие о предложении where:
AND (b.brc_manager = s.stf_id)
, кажется, неправильно. С этим условием вы получаете только менеджера каждого филиала. Если вы хотите получить имя менеджера, вы должны присоединиться к STAFF_T еще раз. Окончательный запрос должен быть:
SELECT b.brc_id AS 'Branch ID',
m.stf_first_name AS 'Manager First Name',
m.stf_last_name AS 'Manager Last Name',
SUM(IIF(s.stf_position = 'Supervisor', 1, 0)) AS
'Number of Supervisor',
SUM(IIF((s.stf_position = 'Staff') AND (s.stf_gender = 'Male'), 1, 0)) AS 'Male
Staff',
SUM(IIF((s.stf_position = 'Staff') AND (s.stf_gender = 'Female'), 1, 0)) AS 'Female Staff'
FROM
BRANCH_T b
INNER JOIN STAFF_T s ON b.brc_id = s.stf_brc_id
LEFT JOIN STAFF_T m ON b.brc_manager = m.stf_id
GROUP BY
b.brc_id, m.stf_first_name, m.stf_last_name