select agent,
case day when 'Mon' then start end as start_mon,
case day when 'Mon' then `end` end as end_mon,
case day when 'Tue' then start end as start_tue,
case day when 'Tue' then `end` end as end_the,
case day when 'Wed' then start end as start_wed,
case day when 'Wed' then `end` end as end_wed
from your_table

for gettin the value on the same row of agent you can use a temp table and group bt

select agent, max(start_mon), max(end_mon), max(start_tue), max(end_tue), max(start_wed), max(end_web)
from (
select agent,
case day when 'Mon' then start end as start_mon,
case day when 'Mon' then `end` end as end_mon,
case day when 'Tue' then start end as start_tue,
case day when 'Tue' then `end` end as end_the,
case day when 'Wed' then start end as start_wed,
case day when 'Wed' then `end` end as end_wed
from your_table ) as t
group by agent;