【问题标题】:SAS proc sql inside %macro that use existing data set使用现有数据集的 %macro 内的 SAS proc sql
【发布时间】:2015-08-05 00:05:23
【问题描述】:

我有以下宏:

%macro AgregateSummAll(SAll,SNatl);
proc sql;
    create table &SNatl as
    select 
      Month, 
      Processing, 
      InsuranceRng,
      sum(Transactions) as Transactions, 
      sum(TotalRev) as TotalRev format dollar16.2
    from &SAll
    group by 
      Month, 
      Processing, 
      InsuranceRng;
quit;
%mend; * AgregateSumAll;

在程序内部,我使用现有表 SumAllReg 来执行宏,但 SAS 看不到它。 %AgregateSummAll(&SumAllReg,SumNatlReg);

得到以下错误信息:

&SumAllReg - 22 200 警告:明显的符号引用 SUMALLREG 未解析。

【问题讨论】:

  • 你是如何定义&sumallreg的。它在我的测试用例中运行良好。
  • 尝试添加一个双精度 && 以将表名传递给宏。
  • 我同意 Reeza,它也适用于我。我无法复制您的错误。尝试使用 %LET 语句进行测试以预定义您的宏变量。这可能是范围问题吗?

标签: sql macros sas proc


【解决方案1】:

你写SumAllReg是一个表,不是包含表名的宏变量,那你为什么把&放在%AgregateSummAll(&SumAllReg,SumNatlReg);里面呢?只需将表的名称传递给您的宏:

%AgregateSummAll(SumAllReg,SumNatlReg);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多