如何将其他表中的记录插入到具有更多sas列的表中

时间:2017-12-14 14:43:55

标签: sas

我有两个sas表,A和B,A有两列(即columna columnb),表B有四列(即columna columnb columnc columnd),我希望将表A中的记录插入表B,我尝试了以下内容,但它显示了错误:

PROC SQL;
  insert into B
   select *, columnc='a', columnd='b' from A;
QUIT;

2 个答案:

答案 0 :(得分:2)

假设您只想将额外的列留空,则不要将它们包含在插入中。使用SAS代码而不是SQL代码要容易得多。

proc append base=b data=a force nowarn;
run;

对于SQL Insert语句,您需要指定要写入的目标表中的哪些列,否则它假定您将为所有列指定值。

insert into B (columna,columnb)
  select columna,columnb
  from A 
;

如果您希望用常量填充额外的列,则在SELECT列表中包含常量。

insert into B (columna,columnb,columnc,columnd)
  select columna,columnb,'a','b'
  from A 
;

如果您肯定是以正确的顺序提供值,那么您可以将列名留在目标表规范之外。

insert into B 
  select *,'a','b'
  from A 
;

答案 1 :(得分:0)

您无法指定变量名称;实际上,您无法使用insert into指定变量。见这个例子:

proc sql;
  create table class like sashelp.class;
  alter table class 
    add rownum numeric;
  alter table class
    add othcol numeric;
  insert into class
    select *, 1 as othcol, monotonic() as rownum from sashelp.class;
quit;

在这里,我使用as来指定列名称,但请注意它实际上不起作用:它将1列放在rownum列中,monotonic() othcol中的值,因为它们在表格中按顺序排列。