What do you want the output to look like? Also is it really any saving, just merge the two tables. I.e. proc transpose data=datasetb out=t_datasetb; var col1-col300; ... proc sql; create table WANT as select A.*, B.VAL from DATASET A left join T_DATASETB B on A.MONTH <= B.COL <= (A.MONTH + 9); quit; Then you can always transpose up. Note that I guessed as the variable names as you haven't provided any test data in a datastep format, I have only written the code from memory.
... View more