Tendrias que especificar un poco mas la lógica de tu filtrado, y que valores puede tener, también si va a haber mas de una ocurrencia de un registro en cualquierda de las dos tablas.
Como yo lo veo así rápido, una tabla siempre tendrá un monto1 de 0 y monto2 mayor que 0, y la otra al revés, y de lo que se trata es hacer un JOIN. Si esto es cierto con un simple IF te basta:
Código:
SELECT a.campo1, a,campo2, a.campo3,
(CASE WHEN a.campo4 = 0 THEN (SELECT...) ELSE (SELECT...) END) AS monto1,
(CASE WHEN b.campo5 = 0 THEN (SELECT...) ELSE (SELECT...) END) AS monto2,
FROM tbl_a a INNER JOIN tbl_b b ON
a.campo1 = b.campo1 AND a.campo2 = b.campo2 AND a.campo3 = b.camp02
No se, algo asi, pero de nuevo necesitarias ser mas explicito.
Saludos