我正在使用SAS Enterprise指南,并希望比较两个日期变量:
我的代码如下:
proc sql;
CREATE TABLE observations_last_month AS
SELECT del_flag_1,
gross_exposure_fx,
reporting_date format=date7.,
max(reporting_date) AS max_date format=date7.
FROM &dataIn.
WHERE reporting_date = max_date;
quit;
如果我在没有WHERE
语句的情况下运行我的代码,我会得到以下数据:
但是,当我运行上面的代码时,我收到以下错误消息:
ERROR: Expression using (=) has components that are of different data types.
ERROR: The following tables were not found in the contributing tables: max_date.
我在这里做错了什么?先谢谢你的帮助
答案 0 :(得分:3)
如果要基于聚合函数进行子集化,则需要使用HAVING而不是WHERE。如果要引用在查询中派生的变量,则需要使用CALCULATED关键字(或者只是重新计算它)。
proc sql;
CREATE TABLE observations_last_month AS
SELECT del_flag_1
, gross_exposure_fx
, reporting_date format=date7.
, max(reporting_date) AS max_date format=date7.
FROM &dataIn.
HAVING reporting_date = CALCULATED max_date
;
quit;