Группируйте по num и выражению CASE, которое изменит код в соответствии с вашими условиями:
select num,
case
when code = '3' AND type IN ( 'FED', 'ASST', 'MED' ) then '1'
when code = '3' AND type IN ('MGD', 'MEDI') then '2'
else code
end code,
count(*) counter
from pay
group by num,
case
when code = '3' AND type IN ( 'FED', 'ASST', 'MED' ) then '1'
when code = '3' AND type IN ('MGD', 'MEDI') then '2'
else code
end
См. demo (для SQL Сервер, но это стандарт SQL). Результаты:
> num | code | counter
> :--------- | ---: | ------:
> 121526s206 | 2 | 2
> 121526s206 | 4 | 1
Для Mysql код может быть упрощен простым наложением псевдонима результата выражения CASE:
select num,
case
when code = '3' AND type IN ( 'FED', 'ASST', 'MED' ) then '1'
when code = '3' AND type IN ('MGD', 'MEDI') then '2'
else code
end newcode,
count(*) counter
from pay
group by num, newcode
См. demo .