data a;
input tno $ amount balance tdate $10.;
datalines;
001 200 200 2010-1-1
002 300 500 2010-2-1
003 400 900 2010-3-1
004 500 1400 2010-4-1
;
run;
data b;
input crate cdate $10.;
datalines;
0.55 2010-1-1
0.65 2010-1-30
0.75 2010-2-15
0.85 2010-3-28
;
run;
data a(rename=(newdate=tdate));
set a;
y=scan(tdate,1,'-')*1;
m=scan(tdate,2,'-')*1;
d=scan(tdate,3,'-')*1;
newdate=mdy(m,d,y);
format newdate yymmddn8.;
drop m d y tdate;
run;
data b(rename=(newdate=cdate));
set b;
y=scan(cdate,1,'-')*1;
m=scan(cdate,2,'-')*1;
d=scan(cdate,3,'-')*1;
newdate=mdy(m,d,y);
format newdate yymmddn8.;
drop m d y cdate;
run;
proc sort data=b;by descending cdate;
run;
data b;
set b;
enddate=lag(cdate)-1;
if enddate=. then enddate=today();
format enddate yymmddn8.;
run;
proc sql;
create table a_b as select
a.*, b.crate
from a, b
where b.cdate<=a.tdate<=b.enddate;
quit;
|