Vous pouvez donner à une requête un nom ou un alias avec la clause CTE (Common Table Expressions) aka WITH aka par Oracle comme Subquery Factoring :
WITH abc as (select client_ref_id, request from some_table where message_type = 1)
select *
from abc
inner join
(select client_ref_id, response from some_table where message_type = 2) defg
on abc.client_ref_id = def.client_ref_id;