SQL - 更改表并添加新值

时间:2018-01-29 16:41:13

标签: sql sas

我正在尝试向现有表添加新列,然后添加该列的值。我不想运行我的代码并破坏现有的表格,如果它错了。我想检查一下我是否有任何错误,因为我对使用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;

1 个答案:

答案 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;