全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1811 3
2008-01-16

偶想生成十九个新的表格,于是用宏试了试,不过错得厉害,不知道怎么改,烦请高手帮忙看看

%macro collapse;
%do i=1 %to 19;
%let j=%eval(1987+&i);
proc sql;
create table ch.y&i as select ch.nyear&i.*,full04.* from ch.nyear&i, ch.full04
where nyear&i.code=full04.code and full04.year='&j';quit;
%end;
run;
%mend collapse;
%collapse;

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2008-1-17 10:02:00

(1) Sql方面错误 

 select ch.nyear&i.*,full04.*   这里的ch.不用了

(2) 宏方面错误

在' '里的宏变量是不解析的,所以要把' '改成"  "

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2008-1-17 13:03:00

除了以上解析的两个问题外,建议你在SAS中用SQL关联表使用关键字JOIN;特别是对于多表链接的情况更是如此.

因此,建议你的程序改成:

%macro collapse;
%do i=1 %to 19;
%let j=%eval(1987+&i);
proc sql;
create table ch.y&i
as
select
a*,
b*
from ch.nyear&i as a
join ch.full04 as b
on a.code=b.code
and b.year="&j"
;
quit;
%end;
run;
%mend collapse;
%collapse;

没有调试,请自行调试.

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2008-1-17 16:06:00

多谢高手指点!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群