【问题标题】:How to add leading zeros to macro variable?如何将前导零添加到宏变量?
【发布时间】:2021-11-21 08:21:25
【问题描述】:

我正在尝试创建一个循环来对一组表执行相同的查询,从 2008 年到 2020 年,每年有一个表:

%macro sqlloop(start,end);
%DO year=&start. %TO &end.;

PROC SQL;
 CREATE TABLE WORK.RESULT_&year
 SELECT DISTINC ID
 FROM YEAR_&year.
QUIT;

%END;
%mend;

%sqlloop(start=8, end=20)

问题是我需要 2008 和 2009 表的前导零,因为它们的名称是:YEAR_08、YEAR_09、YEAR_10...

【问题讨论】:

  • 为什么不直接使用 2008 到 2020 年呢?不仅可以消除前导零的需要,还可以消除由于在年份值中不包括世纪而导致的歧义。
  • 我没有选择表的命名方式。

标签: loops sas sas-macro proc-sql


【解决方案1】:

使用 Z 格式生成带前导零的数字。

%do year=8 to 20;
   %let year=%sysfunc(putn(&year,Z2.));
   ...

【讨论】:

    【解决方案2】:
    %do year = 2008 %to 2020;
      %let y2 = %substr(&year,3,2);
    

    【讨论】:

      猜你喜欢
      • 2011-11-03
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 2020-06-07
      • 1970-01-01
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多