How to calculate the final value of a row based on another table with costs in PostgreSQL
If I understood your question right , you'll need something like 

select bs.key , coalesce(w.walls,0) + coalesce(f.floor,0) + coalesce(r.roof,0) as final_value 
from building_specs bs 
left join spec_value w on w.value= bs.wallsId 
left join spec_value f on f.value= bs.floorId 
left join spec_value r on r.value= bs.roofId 


Output matches 701 and 703 from the question , but different for 702 
(4.8 +10.1+3.6 != 12.2)