SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 828|回复: 3
打印 上一主题 下一主题

如何让宏自动读取数据库最大的记录数?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2008-1-13 18:21:53 | 只看该作者

如何让宏自动读取数据库最大的记录数?

我的数据库有N条数据, N是随机的。
我可以先n = _n_来找出N是多少,但是在宏里面我如何自动引用这个N?
比如:
%do %while m = N;

怎样取得这个N?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2008-1-13 19:02:32 | 只看该作者

Re: 如何让宏自动读取数据库最大的记录数?

[code:2jbs68g8]以数据集test举例。
方法一:
data _null_;
dsid=open('test');
n=attrn(dsid,'nobs');
call symput('n',n);
run;
方法二:
data _null_;
set test end=last;
if last then do;
n=_n_;
output;
end;
call symput('n',n);
run;
方法三:
proc sql noprint;
select count(*) into:n from test;
quit;[/code:2jbs68g8]

以上三种方法都把test的观测总数赋给了宏变量n,后面如果你要调用,可以这样 %do %while (m=&n).
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2008-1-16 20:46:27 | 只看该作者

Re: 如何让宏自动读取数据库最大的记录数?

Thanks a lot!!!
Very helpful!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2008-1-23 19:20:40 | 只看该作者

Re: 如何让宏自动读取数据库最大的记录数?

我发现,
proc sql noprint;
select count(*) into:n from test;
quit;
最好用。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-4 14:01 , Processed in 0.067101 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表