Take a look at my changes. I have not tested it, but eyeballing it I think it should work. %let yr=2017;
%let yr2=2018;
%let DB1var=v1 v2 v3 v4;
%let DB2var=x5 x7 x14 x5;
%let DB1name=mylib1.dt_A&yr; *mylib1.dt_A2017; /* Changed &fy to &yr */
%let DB2name=mylib2.dt_B&yr2; *mylib2.dt_B2018; /* Changed &fy2 to &yr2 */
%macro get (db=, var=, dbname=);
proc sql; create table &db as select a.*, b.*
from have (where= (&db=1) ) as a
left join &dbname (keep=ID &var) as b /* Added ID to the keep statement, Removed & from &&dbname, changed &dbvav to &var */
on a.ID=b.ID; quit; /* Changed b/OD to b.ID (I think that was a typo) */
%mend;
%get (db=DB1, var=&DB1var, dbname= &DB1name) ; /* Removed extra close parenthesis, Added & to value in var and dbName */
%get (db=DB2, var=&DB2var, dbname= &DB2name) ; /* Removed extra close parenthesis, Added & to value in var and dbName, changed DB1name to DB2name */
... View more