全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1585 6
2012-06-29
%macro where_cond(size);
%let wherecond=;
%do i=1 %to &size-1;
        %do j=&i+1 %to &size;
         %let wherecond=&wherecond & &i.ordernumber=&j.ordernumber and &i.itemname<>&j.itemname;
%end;
%end;
%let wherecond=&wherecond;
%mend;
%where_cond(2);
%put &wherecond;
因为sql的条件太多了,我想通过宏实现,但是解析不了,估计是&符号有关
二维码

扫码加我 拉你入群

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

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

全部回复
2012-6-29 13:17:46
测试结果如下:
1          %macro where_cond(size);
2          %let wherecond=;
3          %do i=1 %to &size-1;
4               %do j=&i+1 %to &size;
5                %let wherecond=&wherecond and &i.ordernumber=&j.ordernumber and &i.itemname<>&j.itemname;
6          %end;
7          %end;
8          %let wherecond=&wherecond;
9          %mend;
10         %where_cond(2);
11         %put &wherecond;
WARNING: Apparent symbolic reference WHERECOND not resolved.
&wherecond
NOTE: SAS Institute Inc., SAS Campus Drive, Cary, NC USA 27513-2414
NOTE: The SAS System used:
      real time           0.02 seconds
      cpu time            0.01 seconds
二维码

扫码加我 拉你入群

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

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

2012-6-29 13:29:50
复制代码
二维码

扫码加我 拉你入群

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

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

2012-6-29 13:40:58
hopewell 发表于 2012-6-29 13:29
谢谢,但是还有一些ERROR
1          %macro where_cond(size);
2          %global wherecond=;
3          %do i=1 %to &size-1;
4               %do j=&i+1 %to &size;
5               %if &i=1 and &j=2 %then %let wherecond=&i..ordernumber=&j..ordernumber & &i..itemname<>&j..itemname;
6               %else %let wherecond=&wherecond & &i..ordernumber=&j..ordernumber and &i..itemname<>&j..itemname;
7          %end;
8          %end;
9          %global wherecond=&wherecond;
10         %mend;
11         %where_cond(2);
ERROR: Invalid symbolic variable name =.
ERROR: Invalid symbolic variable name =.
ERROR: Invalid symbolic variable name 1..
ERROR: Invalid symbolic variable name =.
ERROR: Invalid symbolic variable name 2..
ERROR: Invalid symbolic variable name &.
ERROR: Invalid symbolic variable name 1..
ERROR: Invalid symbolic variable name <>.
ERROR: Invalid symbolic variable name 2..
12         %put &wherecond;
1.ordernumber=2.ordernumber & 1.itemname<>2.itemname
二维码

扫码加我 拉你入群

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

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

2012-6-29 14:30:39
不懂,帮你顶顶
二维码

扫码加我 拉你入群

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

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

2012-6-29 15:27:19
复制代码
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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