One Way :
Data Data1;
input Filedate anydtdte. ID Status $ monyear $ birdtype $;
cards;
1/25/2018 100 y JAN2018 Sparrow
2/28/2018 200 y FEB2018 robin
3/15/2018 300 n MAR2018 bluebird
;
run;
Data Data2;
input birdtype $ monyear $ Population;
cards;
Sparrow JAN2018 100
robin FEB2018 150
bluebird MAR2018 150
run;
data Data3;
input reportorder monyear $ (startdt endddt extdt) (anydtdte.);
cards;
1 JAN2018 1/31/2016 01/31/2017 04/30/2018
2 FEB2018 2/29/2016 02/28/2017 05/31/2018
3 MAR2018 4/30/2016 04/30/2017 07/31/2018
;
run;
data want;
length birdtype $15. Population reportorder startdt endddt extdt 8.;
if _n_=1 then do;
declare hash h1(dataset:"Data2");
h1.definekey('birdtype','monyear');
h1.definedata(all:'y');
h1.definedone();
declare hash h2(dataset:"Data3");
h2.definekey('monyear');
h2.definedata(all:'y');
h2.definedone();
call missing(birdtype,Population,reportorder,startdt,endddt,extdt);
end;
set Data1;
rc1=h1.find();
rc2=h2.find();
drop rc1 rc2;
run;
... View more