我有两个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;
答案 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
中的值,因为它们在表格中按顺序排列。