I am trying to automate a claims pull process where I assign a time period based on macro date variables. When I run want_R12_prev and want_R12_curr as data steps by themselves, I get the desired number of records for each time period. data want_R12_prev;
set claims_data;
By var1 var2 var3;
where datepart(Dt_Activity) <= &PrevRunOut.;
if datepart(Dt_Incurred) >= &FromDtPrev.
And datepart(Dt_Incurred) <= &ToDtPrev.
And datepart(Dt_Activity) <= &PrevRunOut.
And last.ClmLn Then Rolling12 = "Rolling 12 - 1YrP";
run;
data want_R12_curr;
set claims_data;
By var1 var2 var3;
where datepart(Dt_Activity) <= &CurrentRunOut.;
if datepart(Dt_Incurred) >= &FromDtCurrent.
And datepart(Dt_Incurred) <= &ToDtCurrent.
And datepart(Dt_Activity) <= &CurrentRunOut.
And last.ClmLn Then Rolling12 = "Rolling 12 - CYrP";
run; But when I try to run them together in one data step, want_multiple, it does not bring back all the records the individual data steps bring back. I am attempting to assign a YTD period, then invoke the Where clause twice to assign two different Rolling12 periods. The Where does not appear to do anything as I get the same number of records back as I do without it in the code. The actual code has many more period assignments so instead of creating and joining 30+ different data steps I was wondering if my goal of assigning multiple types of time periods is possible to do in one step? data want_multiple;
set claims_data;
By var1 var2 var3;
if datepart(Dt_Incurred) >= &FromDt2019.
And datepart(Dt_Incurred) <= &ToDt2019.
And datepart(Dt_Activity) <= &ToDt2019.
And last.Clmln Then Year = "Year to Date - 1YrP";
else if datepart(Dt_Incurred) >= &FromDt2020.
And datepart(Dt_Incurred) <= &ToDt2020.
And datepart(Dt_Activity) <= &ToDt2020.
And last.Clmln Then Year = "Year to Date - CYr";
where datepart(Dt_Activity) <= &PrevRunOut.;
if datepart(Dt_Incurred) >= &FromDtPrev.
And datepart(Dt_Incurred) <= &ToDtPrev.
And datepart(Dt_Activity) <= &PrevRunOut.
And last.ClmLn Then Rolling12 = "Rolling 12 - 1YrP";
where datepart(Dt_Activity) <= &CurrentRunOut.;
if datepart(Dt_Incurred) >= &FromDtCurrent.
And datepart(Dt_Incurred) <= &ToDtCurrent.
And datepart(Dt_Activity) <= &CurrentRunOut.
And last.ClmLn Then Rolling12 = "Rolling 12 - CYrP";
run; Big thanks and any input is greatly appreciated!
... View more