perform multiple conditional join on multiple tables
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;