I think you want something like this:
FROM circ_rpt.vw_subs_financial_drw p15
WHERE trans_date >= TRUNC (SYSDATE) - 15
AND trans_date < TRUNC (SYSDATE)
AND EXISTS (
WHERE account = p15.account
AND trans_date = TRUNC (SYSDATE)
You can use :Enter_date instead of SYSDATE, but make sure it really is a DATE. If :enter_date is a string, then remember to use TO_DATE.
If you do a join, you'll get duplicate rows if there happen to be 2 (or more) rows for the same account dated today.
The main problem with what you posted was that the way you checked for the past 15 days:
WHERE SFD.trans_date between trunc(:Enter_date) -15 and trunc(:Enter_date)
Any row that met the condition for occurring on :enter_date
WHERE SFD.trans_date = trunc(:Enter_date)
would also meet the other condition, since BETWEEN includes both end-points.