First, you really should start writing your queries using ANSI-92 style joins instead of ANSI-89 style joins. It makes your code easier to read and separates the join criteria from the filter criteria.
Try the following. It is untested as you did not provide the DDL for the tables, sample data, or expected results.
select
*
from
tbl_lender_kd_expense ohp
inner join mf_ohp_key_data keydata
on (ohp.project_name = keydata.fk_project_name
replace(ohp.FHA_Number,'-','') = keydata.fk_fha_number)
inner join (Select distinct
ohp.year_1,
keydata.fk_fha_number
from
tbl_lender_kd_expense ohp1
inner join mf_ohp_key_data keydata1
on (replace(ohp1.FHA_Number,'-','') = keydata1.fk_fha_number
and ohp1.project_name = keydata1.fk_project_name
where
ohp1.year_1 is not null
and ohp1.kd_source_type = 'Effective Gross Income (from previous table)') dt
on (keydata.tag_year = dt.year_1
and keydata.fk_fha_number = dt.fk_fha_number)
where
kd_source_type = 'Net Operating Income'
;