@Singham20
First step is to read your source data into a SAS table in a long structure. Below a SAS data step which creates some sample data in such a long structure.
data have_long(drop=_i);
attrib
group project length=$8.
start_dt expected_dt format=ddmmyy10.
expected_earning format=best32.
;
group='A';
project='P1';
start_dt='01jan2020'd;
expected_earning=2;
do _i=0 to 47;
expected_dt=intnx('month',start_dt,_i,'b');
output;
end;
group='B';
project='P8';
start_dt='01jul2020'd;
expected_earning=8;
do _i=0 to 40;
expected_dt=intnx('month',start_dt,_i,'b');
output;
end;
run;
Once you've got your data organized just compare the start date with the current date in the row and then use the adjustment factor based on the month you're in.
data risk_adjusted;
set have_long;
attrib
expected_earning_adj format=best32.
;
/* month 7+ */
if intck('month',start_dt,expected_dt)>=6 then
expected_earning_adj=expected_earning*0.8;
/* 4th to 6th month */
else if intck('month',start_dt,expected_dt) in (3,4,5) then
expected_earning_adj=expected_earning*0.6;
/* first 3 months */
else if intck('month',start_dt,expected_dt) in (0,1,2) then
expected_earning_adj=expected_earning*0.3;
run;
proc print data=risk_adjusted;
run;
In case it's not clear to you what functions intck() and intnx() are doing, start with reading the docu here.
To create the report: Look into Proc Report.
... View more