如何在SAS EG查询生成器中编写WHERE语句筛选上月日期数据
SAS EG查询生成器动态筛选上月MONYYYY格式数据的WHERE语句写法
场景1:日期字段为字符型,存储内容为SEP2021类字符串
直接使用如下过滤条件:
WHERE 你的日期字段 = UPCASE(PUT(INTNX('MONTH', TODAY(), -1), MONYY7.))
逻辑说明:
INTNX('MONTH', TODAY(), -1):自动计算当前日期往前推1个月的对应日期PUT(..., MONYY7.):将计算得到的上月日期转换为MONYYYY格式的字符串UPCASE用于兼容字段内存在小写字符的情况,若所有取值均为大写可直接删除该函数
场景2:日期字段为SAS数值型日期,仅显示格式设置为MONYY7.
这种场景下不用转换字符串,直接对齐月份判断即可,性能更高:
WHERE INTNX('MONTH', 你的日期字段, 0) = INTNX('MONTH', TODAY(), -1)
SAS EG查询生成器配置提示
你不需要手动输入完整WHERE关键字,直接在查询生成器的「过滤条件」页签新增过滤,选择对应日期字段后,值的位置输入上述等号右侧的表达式即可。
注意事项
- 该逻辑会自动处理跨年场景:1月运行时会自动返回上一年12月的对应数据
- 若你的日期字符串为短年份格式(如SEP21),将格式符
MONYY7.替换为MONYY6.即可
内容的提问来源于stack exchange,提问作者Boswser
相关产品推荐
相关产品推荐

