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;