SAS 使用 proc sql 插入值
SAS insert value with proc sql
所以我有一个很有趣的问题。我正在尝试以特定格式和样式插入当前日期,但由于某种原因它似乎失败了。我知道这不是格式问题......但我不知道如何解决它。也欢迎数据步骤解决方案...这是有效的方法。
proc sql;
create table work.test
(test_Id char(50), test_Name char(50), cur_Mo char(1), cur_Qtr char(1), entered_Date char(8));
insert into work.test
values('201703','2017 Mar','0','0','24APR17')
values('201704','2017 Apr','0','0','24APR17')
values('201706','2017 Jun','1','0','23JUN17');
quit;
这里没有:
proc sql;
insert into work.test
values(catx('',put(year(today()),4.),case when month(today())< 10 then catx('','0',put(month(today()),2.)) else put(month(today()),2.)end) ,catx(' ',[put(year(today()),4.),put(today(),monname3.))],'1','0',put(today(),date7.));
quit;
您可以使用 %SYSFUNC() 宏函数在宏代码中调用大多数其他 SAS 函数。因此,要以 DATE7 格式生成今天的日期,您可以使用:
insert into work.test (date)
values("%sysfunc(date(),date7)")
;
我可能会采用的方法是使用数据步骤制作要插入的数据集,然后插入该数据集。
您可以在 SAS 中使用 insert into (...) select (...) from (...)
语法,数据步骤更加灵活,允许您定义列。
例如:
proc sql;
create table class like sashelp.class;
quit;
proc sql;
insert into class
select * from sashelp.class;
quit;
或者您可以只指定某些变量:
proc sql;
insert into class (name, age)
select name, age from sashelp.class;
quit;
data to_insert;
name= 'Wilma';
sex = 'F';
age = 29;
height = 61.2;
weight = 95.3;
run;
proc sql;
insert into class
select * from to_insert;
quit;
只需确保您明确列出 insert/select 的变量,或者您的顺序完全正确(如果您像我上面那样使用 *
,它按位置匹配)。
所以我有一个很有趣的问题。我正在尝试以特定格式和样式插入当前日期,但由于某种原因它似乎失败了。我知道这不是格式问题......但我不知道如何解决它。也欢迎数据步骤解决方案...这是有效的方法。
proc sql;
create table work.test
(test_Id char(50), test_Name char(50), cur_Mo char(1), cur_Qtr char(1), entered_Date char(8));
insert into work.test
values('201703','2017 Mar','0','0','24APR17')
values('201704','2017 Apr','0','0','24APR17')
values('201706','2017 Jun','1','0','23JUN17');
quit;
这里没有:
proc sql;
insert into work.test
values(catx('',put(year(today()),4.),case when month(today())< 10 then catx('','0',put(month(today()),2.)) else put(month(today()),2.)end) ,catx(' ',[put(year(today()),4.),put(today(),monname3.))],'1','0',put(today(),date7.));
quit;
您可以使用 %SYSFUNC() 宏函数在宏代码中调用大多数其他 SAS 函数。因此,要以 DATE7 格式生成今天的日期,您可以使用:
insert into work.test (date)
values("%sysfunc(date(),date7)")
;
我可能会采用的方法是使用数据步骤制作要插入的数据集,然后插入该数据集。
您可以在 SAS 中使用 insert into (...) select (...) from (...)
语法,数据步骤更加灵活,允许您定义列。
例如:
proc sql;
create table class like sashelp.class;
quit;
proc sql;
insert into class
select * from sashelp.class;
quit;
或者您可以只指定某些变量:
proc sql;
insert into class (name, age)
select name, age from sashelp.class;
quit;
data to_insert;
name= 'Wilma';
sex = 'F';
age = 29;
height = 61.2;
weight = 95.3;
run;
proc sql;
insert into class
select * from to_insert;
quit;
只需确保您明确列出 insert/select 的变量,或者您的顺序完全正确(如果您像我上面那样使用 *
,它按位置匹配)。