我现在编了一段宏函数,然后想调用宏函数,结果老是出错~求高手指教。
%macro sort;
proc sql;
select dcode,state,province
,AVG(A1) AS CSIA01 /*A1平均值*/
,AVG(A2) AS CSIA02 /*A2平均值*/
,AVG(A3) AS CSIA03 /*A3平均值*/
,AVG(B1) AS CSIB01 /*B1平均值*/
,AVG(B2) AS CSIB02 /*B2平均值*/
,AVG(B3) AS CSIB03 /*B3平均值*/
,AVG(C1) AS CSIC01 /*C1平均值*/
,AVG(C2) AS CSIC02 /*C2平均值*/
,AVG(C3) AS CSIC03 /*C3平均值*/
,AVG(C4) AS CSIC04 /*C4平均值*/
,AVG(D1) AS CSID01 /*D1平均值*/
,AVG(D2) AS CSID02 /*D2平均值*/
,AVG(D3) AS CSID03 /*D3平均值*/
,AVG(E1) AS CSIE01 /*E1平均值*/
,AVG(E2) AS CSIE02 /*E2平均值*/
,AVG(E3) AS CSIE03 /*E3平均值*/
,CSIA01*0.315+CSIA02*0.282+CSIA03*0.403 AS CSIA00 /*A1-A3加权平均*/
,CSIB01*0.294+CSIB02*0.340+CSIB03*0.366 AS CSIB00 /*B1-B3加权平均*/
,CSIC01*0.209+CSIC02*0.189+CSIC03*243+CSIC04*0.358 AS CSIC00 /*C1-C4加权平均*/
,CSID01*0.322+CSID02*0.312+CSID03*0.367 AS CSID00 /*D1-D3加权平均*/
,CSIE01*0.288+CSIE02*0.336+CSIE03*0.376 AS CSIE00 /*E1-E3加权平均*/
from lib.qirui2010csi
GROUP BY dcode,state,province;
quit;
%mend;
proc sql;
SELECT %sort FROM merge1
WHERE state="西南";
quit;
错误老是显示:
1 proc sql;
---
79
ERROR 79-322: 期望‘FROM’。
ERROR: 以下这些列在起作用的表中没有找到: CSIA01, CSIA02, CSIA03, CSIB01, CSIB02, CSIB03, CSIC01, CSIC02,
CSIC03, CSIC04, CSID01, CSID02, CSID03, CSIE01, CSIE02, CSIE03, dcode, province, state.
难道我必须先设定这些变量?求高手帮忙~~~