Ci sono alcuni modi semplici che usano solo sql.
Definisci la tua prima query come tabella temporanea, con union all, filtra la seconda query con il conteggio della tabella temporanea.
with temp as (select * from t1 where 1=0)
select * from temp
union all
select * from t2 where (select count(*) from temp) =0
Questa query restituirà i record della seconda tabella.
with temp as (select * from t1 )
select * from temp
union all
select * from t2 where (select count(*) from temp) =0
E se la query temporanea ha un risultato, restituisce solo la query temporanea.
Puoi testare con sql fiddle qui .