It sounds like you need an OUTER JOIN - do I understand correctly that there are rows in offer_details with no corresponding rows in offer? (sounds very strange to me . . .)
select offer_details.subject, count(offer.offerdate) AS "Number Of Times"
from offer, offer_details
where (offer.offerDate > '1/jan/00' OR offer.offerDate is NULL)
AND offer.offercode(+) = offer_details.offercode
group by offer_details.subject;
"The power of instruction is seldom of much efficacy except in those happy dispositions where it is almost superfluous" - Gibbon, quoted by R.P.Feynman