SELECT user_id ,product_id ,top_parent_geo_desc ,context_type_desc ,context_sub_type_desc FROM (SELECT DISTINCT gr.user_id ,vp.product_id ,g.geo_desc AS top_parent_geo_desc ,gr.context_type_desc ,CASE WHEN (gr.context_sub_type_desc LIKE '%BANNER%') AND vp.is_competitor = 0 THEN 'BANNER' WHEN (gr.context_sub_type_desc LIKE '%BANNER%') AND vp.is_competitor = 1 THEN 'BANNER_COMP' WHEN (gr.context_sub_type_desc = 'TSA') AND vp.is_competitor = 0 THEN 'TSA' WHEN (gr.context_sub_type_desc = 'TSA') AND vp.is_competitor = 1 THEN 'TSA_COMP' ELSE gr.context_sub_type_desc END AS context_sub_type_desc FROM xof_r_user_geo_resp gr ,(/* Find if the product is part of a basic or competitor market */ SELECT p.product_id ,p.context_code ,product_code ,CASE WHEN (p.context_code, SUBSTR(p.product_id,4,2)) IN (SELECT DISTINCT p2.context_code ,SUBSTR(p2.product_id,4,2) FROM xof_d_product p2 WHERE SUBSTR(p2.product_id,6,1) = 2) THEN 1 ELSE 0 END AS is_competitor FROM xof_d_product p WHERE p.level_num <> 0 AND p.product_code IS NULL UNION SELECT p.product_id ,p.context_code ,p.product_code ,CASE SUBSTR(p.product_id,6,1) WHEN '2' THEN 1 ELSE 0 END AS is_competitor FROM xof_d_product p WHERE p.level_num = 0 AND p.product_code IS NULL) vp ,xof_d_geo g WHERE gr.top_parent_geo_id = g.geo_id AND g.level_num = 1 AND gr.context_sub_type_desc <> 'STD_BANNER' AND UPPER(gr.context_type_desc) = UPPER(vp.context_code)) a WHERE -- Make sure that the user/SFA/context/sub-context already exists in the the relationship table (user_id ,top_parent_geo_desc ,context_type_desc ,context_sub_type_desc) IN (SELECT user_id ,top_parent_geo_desc ,context_type_desc ,context_sub_type_desc FROM xof_r_user_product -- --WHERE user_id=203 );