Hello,
I'm trying to update the names table, but only if two of its columns match the ones from the donations table. Is it possible to do it in a single block of code?
data names;
input name $ ssn $ invited $;
datalines;
john 10 n
phil 12 n
charles 13 n
;
data donations;
input name $ ssn $ donated;
datalines;
joe 23 1000
george 18 4599
phil 12 6553
;
proc sql;
update names as a
set invited='y'
where (a.name=donations.name and a.ssn=donations.ssn);
quit;
Please try
proc sql;
create table test as select a.name,a.ssn,b.donated,
case when a.name=b.name and a.ssn=b.ssn then 'y' else a._invited end as invited
from names(rename=(invited=_invited)) as a left join donations as b on a.name=b.name and a.ssn=b.ssn;
quit;
data names;
input name $ ssn $ invited $;
datalines;
john 10 n
phil 12 n
charles 13 n
;
data donations;
input name $ ssn $ donated;
datalines;
joe 23 1000
george 18 4599
phil 12 6553
;
proc sql;
update names as a
set invited='y'
where exists(select * from donations where
a.nam
e=donations.name and a.ssn=donations.ssn);
quit;
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.