在 proc sql WHERE 子句中比较 SAS 中的两个日期变量

Comparing two date variables in SAS in a proc sql WHERE clause

我正在使用 SAS Enterprise guide 并想比较两个日期变量:

我的代码如下所示:

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.

我在这里做错了什么?预先感谢您的帮助

如果您想基于聚合函数进行子集化,那么您需要使用 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;