06-02-2016 09:14 AM
I am new to SAS and looking for converting below code to SQL
merge strat.master1(in=ge) strat.client strat.abc(in=pw);
I know that Merge by is match merging but not getting meaning of last 3 lines "if ge; abc=pw"
Your help is much appreciated
Thanks In advance
06-02-2016 09:57 AM
Note the IN on the merge statement that creates two automatic variables, ge and pw.
The variables are indicators that shownthe source of the record.
If ge -> record is present in indicated dataset. This would be analogous to specifying a right/left join.
Abc=pw -> store an indicator variable that shows if the record was present in the second dataset.
You can replicate this functionality using a Case statement in your query.
06-02-2016 01:10 PM
PROC SQL; CREATE TABLE strat.master AS SELECT * FROM strat.master sm left join strat.client sc (on sm.code=sc.code) left join strat.abc ab (on sm.code=ab.code); QUIT;
Maybe start out with something like this.
06-02-2016 09:52 PM
Assuming CODE in all these three tables has no duplicated value. i.e. its value is unique.
data master1; set sashelp.class; rename name=code; run; data client ; set sashelp.class; if _n_=8 then stop; rename name=code age=new_age1; keep name age; run; data abc; set sashelp.class; if _n_=4 then stop; rename name=code age=new_age2; keep name age; run; proc sql; select a.*,b.new_age1,c.new_age2,not missing(c.code) as abc from master1 as a left join client as b on a.code=b.code left join abc as c on a.code=c.code; quit;