Hi Nigel I changed as you suggested but it still doing Filter operation? The only way I see is use dynamic SQL Btw this is 9.2.0.8 Thanks On Tue, Mar 23, 2010 at 4:12 PM, Nigel Thomas < nigel.cl.thomas@xxxxxxxxxxxxxx> wrote: > Is it evaluating SYSDATE for every row (because the result of SYSDATE > changes over the course of the execution)? Might be better to put the range > bounds into variables - eg > > BEGIN > :end_date := add_months(trunc(sysdate, 'MM'), -1); > :start_date := trunc(sysdate, 'MM'); > END; > > and then change your predicates: > > WHERE MF.F_PERIOD >= :end_date > AND MF.F_PERIOD < :start_date > > Regards Nigel > > On 23 March 2010 14:44, LS Cheng <exriscer@xxxxxxxxx> wrote: > >> Any suggestions? >> >> Thanks >> >> -- >> LSC >> >> >> >