У нас есть только фрагмент NVL для продолжения, а не остальные, из ссылки te1.last_name я вижу, что это коррелированный подзапрос, поскольку te1 не входит в приведенный фрагмент кода.
Грубая идея заключается в том, что вам нужно объединить 2 запроса вместо того, чтобы повторять их - в этом случае они объединяются на основе te1.last_name, поскольку это, как вам кажется, нужно, но без остальной части запроса, чтобыпонять контекст, я не могу быть уверен.
После присоединения вы можете просто использовать nvl (или объединить для более ANSI-подхода)
С точки зрения производительности, это всегда будет немного проблематично, так как вы используете полный подстановочный поиск вгде пункты, а также нижняя функция.
select
coalesce(x.asp_name, y.asp_name) as asp_name
, coalesce(x.tiering_2, y.tiering_2) as tiering_2
, coalesce(x.tiering_1, y.tiering_1) as tiering_1
from (
select * from (
select
te1.last_name, tad.ASP_NAME, tad.TIERING_2,tad.TIERING_1
from TBL_ASP_DETAILS tad
where lower(te1.last_name) like '%'||lower(tad.ASSIGNED_FE_LAST_NAME)||'%'
)
where ROWNUM = 1
) x
full join (
select * from (
select te1.last_name, tad.ASP_NAME, tad.TIERING_2,tad.TIERING_1
from TBL_ASP_DETAILS tad
where lower(te1.last_name) like '%'||lower(tad.ASP_NAME)||'%'
)
where ROWNUM = 1
) y on x.last_name = y.last_name