Come offer_date
è un numero e ha una precisione inferiore rispetto alle tue date reali, questo potrebbe funzionare...
- Converti la tua data reale in una stringa di formato YYYYMM
- Converti quel valore in un INT
- Confronta il risultato con il tuo offer_date
SELECT
*
FROM
offers
WHERE
offer_date = (SELECT CAST(to_char(create_date, 'YYYYMM') AS INT) FROM customers where id = '12345678')
AND offer_rate > 0
Inoltre, eseguendo tutte le manipolazioni su create_date
esegui l'elaborazione solo su un valore.
Inoltre, hai manipolato il offer_date
non saresti in grado di utilizzare alcun indice su quel campo, quindi forza SCAN invece di SEEK.