1
我想弄清楚什么是最好的方式去做这件事,我对sas真的很陌生,我只是在飞行中学习,所以任何帮助将不胜感激。我必须在目标表(tableB)上的一个数值列(长度为8,格式为23)中插入一个PK值。我尝试使用通常的空白或0值来查看自动增量是否会启动,但不是。我也尝试使用max(id)+1,这不起作用,它给了我一个重复的关键错误。SAS-增加一个数字PK列,在循环内自动增量
现在我有,做以下(请与我裸露,如果这个代码不太守,我仍然很新的SAS)宏中的代码:
%macro testmacro;
%local datasetcount iter;
proc sql;
select count(*) into :datasetcount from tableA;
%do %while (&iter.<=&datasetcount.);
data _NULL_;
Set tableA (firstobs=&iter. obs=&iter.);
run;
PROC SQL;
Insert into TableB(pkid, col1b, col2b, col3b)
Select (**<need to get last pkid and increment by 1 so no duplication occurs>**, col1A, col1B, col1C)
From tableA (firstobs=&iter. obs=iter.)
QUIT;
%let iter=%eval(&iter.+1);
%end;
%mend testmacro;
%testmacro;
我只需要找到a自动从TABLEB中取出最后一个PKID条目并将其增加1并将其传递到下一列,直到迭代循环完成。
任何帮助,这将是极大的再次
嗨DomPazz,感谢您的快速回答。我给了它绿色的复选标记,我会给它一个重点,但我显然没有。 – vbala2014 2014-09-24 16:34:30
另外还有一个问题,如果我必须从同一个表中获取主键而不是另一个表,那么这种方法应该正确吗?请纠正我,如果我错了 – vbala2014 2014-09-24 16:35:26
我不知道你的意思。你能详细说明吗? – DomPazz 2014-09-24 22:07:18