需要更新主文件中的列,例如Column1
有A
& B
值。
我有一组不同的文件(映射文件),它有2个不同的列Column1
只有A
个值& Column2
只有B
个值,这些值具有唯一值。
我的要求是仅将A
值替换为B
,并且显示的B
值必须与主文件中的列保持相同。
请帮我在SAS SQL中编写更新语句。
我试过了,
PROC SQL;
UPDATE MASTERTABLE K
SET COLUMN1 = (SELECT L.COLUMN2 FROM MAPPINGFILE L WHERE K.COLUMN1= L.COLUMN1);
QUIT;
答案 0 :(得分:0)
听起来您希望最小化跟踪主表预映射值以及执行映射操作。如果不是这种情况,请使用更多详细信息和示例数据编辑问题。
SQL exists
运算符将允许您指定为更新选择仅需要映射操作的行的条件。
data have_master;
do row = 1 to 100;
current_value = byte(65 + mod(row,26));
prior_value = ' ';
output;
end;
run;
data have_map;
length from_value to_value $1;
input from_value to_value;
datalines;
A a
B d
Z K
run;
proc sql;
update have_master
set
prior_value = current_value
, current_value = (select to_value from have_map where have_map.from_value = have_master.current_value)
where
exists (select * from have_map where have_map.from_value = have_master.current_value)
;
%let syslast=have_master;
我说最低限度跟踪,因为后续使用查询可以覆盖先前分配的prior_value
。