data have; input tx_id tx_date account_id amt; informat tx_date date9.; format tx_date date9.; cards; 1 01jan2012 101 1000 2 02jan2012 101 1000 3 03jan2012 101 1000 4 04jan2012 101 1000 5 05jan2012 101 1000 6 06jan2012 101 1000 7 07jan2012 101 1000 8 08jan2012 101 1000 9 09jan2012 101 1000 10 10jan2012 101 1000 11 01jan2012 102 5000 12 01jan2012 103 100 ; run; proc sql; select distinct account_id from (select t1.account_id ,t1.tx_date from work.have t1 left outer join work.have t2 on t1.account_id=t2.account_id and t1.tx_date <= t2.tx_date and intnx('year',t1.tx_date,1)>=t2.tx_date group by t1.account_id, t1.tx_date having sum(t2.amt)>=5000) ; quit;
... View more