Если верно предположение, что в Task только один id_* имеет не-null значение, то как-то так (решение в лоб, можно изящнее)
select value, (case
when id_pc is not null then (select value from PC where id=id_pc)
when id_monitor is not null then (select value from Monitor where id=id_monitor)
when id_printer is not null then (select value from Printer where id=id_printer)
end) as res from Task
order by id;
Если допущение не верно, то просто условие в case будет сложнее