Perhaps do it two parts - grab the subset of data first, and then attack that
with subset as
( select /*+ materialize */ * from my_table where id in ( 1,2,3,4..... ) )
select a1,a2
from
( select a1 from subset where id = 1 ),
( select a2 from subset where id = 1 ),
( select a3 from subset where id = 1 ),
( select a4 from subset where id = 1 )