我正在尝试向现有表添加新列,然后添加该列的值。我不想运行我的代码并破坏现有的表格,如果它错了。我想检查一下我是否有任何错误,因为我对使用sql是个新手:
PROC SQL;
ALTER TABLE work.tablename
ADD
CPdate INT NOT NULL;
UPDATE work.tablename
SELECT t1.CP
FROM WORK.CPtable t1
INNER JOIN work.tablename t2
ON t1.spec=t2.spec AND t1.code = t2.code
;QUIT;
答案 0 :(得分:1)
简单的答案是不要这样做。使用您想要的数据创建一个新表。
data new_table ;
merge tablename (in=in1 ) CPTABLE (keep=spec code cp rename=(cp=cpdate));
by spec code ;
if in1 ;
run;
如果您真的想坚持使用SQL,那么请使用create table语句。
PROC SQL;
create table new_table as
select a.*,b.cp as CPdate
from tablename a
left join CPtable b
on a.spec=b.spec AND a.code = b.code
;
QUIT;
您可以要求SAS为输出表使用相同的名称,并且只有在代码运行时没有错误才会替换它,但这仅用于导致无效代码的错误,而不是导致错误数据的逻辑中的编程错误要创造。
如果您不再需要旧版本,可以将其删除。
proc delete data=tablename ;
run;