【发布时间】:2019-02-04 09:54:56
【问题描述】:
我有一个这样的宏:
%macro loop(report_date);
/* some sql-code with where-statement on report_date:
create table with name small_table */
%mend;
然后我想编写一个创建表的代码:该表是表的联合,其中变量 report_day 的条件为真。 但我的代码不起作用:
%let days_number = 31;
%let Min_Date = '01Jan2018:00:00:00'dt;
/* create table with name big_table */
/*this macro creates a union table */
%macro doInLoop(report_date);
%loop(&report_date.);
PROC SQL;
CREATE TABLE Big_table AS
SELECT *
FROM big_table
UNION ALL
SELECT *
FROM small_table;
QUIT;
%mend;
%macro createTable;
%local j;
%do j = 1 to &days_number.;
%let rep_date = dhms(datepart(&Min_Date.) + j, 0, 0, 0);
%if day(rep_date) = 1 %then %doInLoop(%rep_date);
%end;
%mend;
%createTable;
我的消息有 31 个错误: "错误:在贡献表中未找到以下列:j"
或者我怎样才能创建一个宏,它使用一个工作宏一天(“循环”),在范围内的某些天?
谢谢。
【问题讨论】:
标签: sql date macros sas conditional-statements