perform multiple conditional join on multiple tables I have a situation where I need to get result based on conditional joins

For example,  

    SELECT 
      CGI.SALES_BRAND_BSNSS_ID,
      CGI.SALES_BRAND_CD,
      NVL(MTRX. matrix_score_cd,'RV1') MATRIX_SCORE_CD,
      MDL.CORP_GROUP_ID,
      MDL.MKTBRIDGE_RUN MKTBRIDGE_RUN_CD,
      MDL.MKTBRIDGE_GROW MKTBRIDGE_GROW_CD,
      MDL.MACRO_SEG MACRO_SEG_CD
FROM 

      BIRTAB.CGI_ACTIVE_CUST_SEG_V MDL INNER JOIN

      BIRTAB.SBBID_CGI_HIST_XREF CGI ON

      MDL.CORP_GROUP_ID = CGI.CORP_GROUP_ID LEFT JOIN

      BIRTAB.CUST_SEG_SCORE_MATRIX MTRX ON

-- if below two join conditions matches then it need to go to 3rd join condition else ignore all joins, 

            NVL(trim(MDL.ECHECK_DECILE_CD),'%') = trim(MTRX. ECHECK_DECILE_CD) AND 

            NVL(trim(MDL.MACRO_SEG),'%') = trim(MTRX.MACRO_SEGMENT_CD)  AND 

-- if the above two joins matches and below join doesn't matches then ignore below two joins and get result based on above 2 joins 

            NVL(trim(MDL.MKTBRIDGE_RUN),'%') = trim(MTRX.MKT_BRIDGE_RUN_CD) AND

-- if the above three joins matches and below join doesn't matches then ignore below join and get result based on above 3 joins             

            NVL(trim(MDL.MKTBRIDGE_GROW),'%') = trim(MTRX.MKT_BRIDGE_GROW_CD)


Can anyone suggest some ideas to perform this logic.

Ty
I got answer for my question, I did a subquery and applied rank and order by functions and get first matching values. 

    SELECT 
      CGI.SALES_BRAND_BSNSS_ID,
      CGI.SALES_BRAND_CD,
      SUBQRY.matrix_score_cd,
      SUBQRY.corp_group_id,
      SUBQRY.MKTBRIDGE_RUN MKTBRIDGE_RUN_CD,
      SUBQRY.MKTBRIDGE_GROW MKTBRIDGE_GROW_CD,
      SUBQRY.MACRO_SEG MACRO_SEG_CD

FROM
(
SELECT
    cgi_active_cust_seg_v.corp_group_id,
    cust_seg_score_matrix.matrix_score_cd,
    CGI_ACTIVE_CUST_SEG_V.MKTBRIDGE_GROW,
    CGI_ACTIVE_CUST_SEG_V.MKTBRIDGE_RUN,    
        CGI_ACTIVE_CUST_SEG_V.MACRO_SEG,
    RANK() OVER (PARTITION BY cgi_active_cust_seg_v.corp_group_id ORDER BY cust_seg_score_matrix.mkt_bridge_run_cd DESC,
    cust_seg_score_matrix.mkt_bridge_grow_cd DESC,
    cust_seg_score_matrix.macro_segment_cd DESC,
    cust_seg_score_matrix.echeck_decile_cd DESC) VAL_MATCH
FROM
    birtab.cgi_active_cust_seg_v INNER JOIN
    birtab.cust_seg_score_matrix ON
        cust_seg_score_matrix.mkt_bridge_run_cd IN ('%', NVL(cgi_active_cust_seg_v.mktbridge_run,'%')) AND
        cust_seg_score_matrix.mkt_bridge_grow_cd IN ('%', NVL(cgi_active_cust_seg_v.mktbridge_grow,'%')) AND
        cust_seg_score_matrix.macro_segment_cd IN ('%',NVL(cgi_active_cust_seg_v.macro_seg,'%')) AND
        cust_seg_score_matrix.echeck_decile_cd IN ('%',NVL(cgi_active_cust_seg_v.echeck_decile_cd,'2')) AND
        SYSDATE BETWEEN cust_seg_score_matrix.EFFEC_DT AND cust_seg_score_matrix.END_DT

) SUBQRY 
INNER JOIN
      BIRTAB.SBBID_CGI_HIST_XREF CGI ON
            SYSDATE BETWEEN CGI.SBBID_CGI_EFFEC_DT AND NVL(CGI.SBBID_CGI_END_DT,TO_DATE('31-DEC-2999','DD-MON-YYYY')) AND 
            subqry.CORP_GROUP_ID = CGI.CORP_GROUP_ID
WHERE
    VAL_MATCH = 1;