В вашей модели данных запись cus имеет ровно пять агентов, и существует приоритет (или временная шкала или тому подобное) агентов, при этом один агент - это Агент1, один агент - Агент2 и т. Д.
Однако в своем запросе вы не хотите относиться к агентам по-разному, вам даже не важно, происходят ли они из одной и той же строки.Чтобы обработать их всех одинаково, мы преобразуем вашу таблицу в простую таблицу cus-agent, где в каждой строке есть пара cus и agent.Тогда мы можем просто агрегировать и подсчитывать.
select cusid, agent, count(*)
from
(
select cusid, agent1 as agent from mytable
union all
select cusid, agent2 as agent from mytable
union all
select cusid, agent3 as agent from mytable
union all
select cusid, agent4 as agent from mytable
union all
select cusid, agent5 as agent from mytable
) cus_agent
group by cusid, agent
order by cusid, agent;
Если вы хотите, чтобы агенты разделяли столбцы, а не строки, используйте запрос выше и позаботьтесь о компоновке на уровне GUI (т.е. используйте цикл в вашем приложенииили веб-сайт).