我有一个包含 2 个日期列的数据集。dataset1 中的日期列的格式类似于“01/01/2024”
我将它们都放入宏变量中,如下所示:-
%if &DateType. = date1 %then %do;
proc sql no print;
select date1 into: date separated by ', '
from dataset1;
quit;
%end;
%else %if &DateType. = date2 %then %do;
proc sql no print;
select date2into: date separated by ', '
from dataset1;
quit;
%end;
我想在where语句中使用这个宏变量:-
proc sql;
create table want as
select *
from dataset1
where &date. > '01Dec2028'd
;
quit;
但是,我在我的宏中不断收到“错误:语法错误,期望以下之一......”。我需要更改格式吗?
如果您的日期解析为多个日期,您将传递一个以逗号分隔的数字日期列表。换句话说,
&date
可能会解决:
proc sql;
create table want as
select *
from dataset1
where 23330,23331 > '01Dec2028'd
;
quit;
您需要从
dataset1
的表格中选择一个日期。您可以通过选择最大日期或最短日期来执行此操作。此外,如果 dataset1
中不存在有效日期,它还可能向其传递缺失值,因此您需要验证表中是否存在非缺失日期。例如:
proc sql no print;
select max(date1) into: date
from dataset1
where NOT missing(date1)
quit;
%if(&sqlobs = 0) %then %do;
%put ERROR: No valid dates exist in DATASET1.;
%abort;
%end;