• 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'

    ;