Conditional Join in DB2
You need two joins here, one with the "matching" type set, another with "default" type. 

I'm making two assumptions:


"Missing" p_type is an empty string, not null, as follows from your query.
There is at most one row in t_price for each p_route and empty p_type.


:

select r_route, r_type, coalesce(match.p_price, dflt.p_price)
from t_route
left outer join t_price match 
  on (r_route, r_type) = (match.p_route, match.p_type)
left outer join t_price dflt
  on r_route = dflt.p_route and dflt.p_type = ''


dbfiddle link (It would be nice if you'd included it yourself).