sql - Update a table using another table in SAS -
i have table t1 , t2, how can create table t3? want update var2 in t1 t1.key=t2.key, using data t2 while keeping else in t1 same.
table t1
key var1 var2 1 aa 2 b bb 3 c cc 4 d dd 5 e ee table t2
key var1 var2 3 c xx 4 d yy 6 f ff table t3
key var1 var2 1 aa 2 b bb 3 c xx 4 d yy 5 e ee the following sas code give me errors:
proc sql; update t1 set var2 = t2.var2 t1 inner join t2 on t1.key=t2.key; quit; thanks!
you can use update statement in data step. update statements similar merge statements, except not replace populated values missing values unless specify. in addition, non-unique keys generate warning, helpful debugging.
the general syntax updating tables , creating new 1 simultaneously:
syntax
data newtable; update mastertable transactiontable; key(s); run; in order update operation data, need make sure 2 datasets either sorted or indexed key variable. if it's not sorted or indexed, sas complain , update fail. in general, add index option @ final steps need create master or transactional datasets. tends save time because additional sorting step prevented.
step 1: make sure tables 1 & 2 either indexed or sorted key
data t1(index=(key) ); <etl stuff>; run; data t2(index=(key) ); <etl stuff>; run; step 2: create new table, t3, updating t1 matching values t2
data t3(index=(key) ); update t1(in=t1_key) /* same thing sql t1.key */ t2(in=t2_key); /* same thing sql t2.key */ key; /* sas's way of specifying left-join */ if(t1_key); run; though not need index= option on t3 here, practice keep key variable indexed or have integrity constraint applied it.
Comments
Post a Comment