PG, you are fantastic. Thanks!!!!!! My real data is over 980000 observations (it is a large panel). when I ran your code (see below), it ran out of memory and stopped responding. +++++++++++++++ proc sql; create table roll as select h2.cusip, h2.monthDate as periodEndDate format=yymmd7., h2.ret, mean(h1.ret) as meanRet, std(h1.ret) as stdRet from have as h1 inner join have as h2 on h1.cusip=h2.cusip and intck("MONTH", h1.monthDate, h2.monthDate) between 1 and 24 group by h2.cusip, h2.monthDate, h2.ret having count(h2.cusip)=24; select * from roll; quit; ++++++++++++++++ I plan to do the following, but have 1 more question. 1. I plan to split the sample (1983-2011) into 3 sets, e.g. 1983-1993, then 1992-2002, then 2001-2011, the overlap is to include the prior 24-month data to compute my stdev. I just ran your code above with 1983-1993, in the output window, it printed the results, is there a way to not have the results printed- maybe that helps with memory size issue? -Lan
... View more