如何在SAS PROC SQL中获取当前财年及上月的对应数据?
在SAS PROC SQL中获取当前财年上月的MTH与Month_Name
核心思路
- 用SAS日期函数计算上月的日历日期,提取对应月份数字和年份
- 根据财年规则生成目标财年标识(如
FY2023) - 在PROC SQL中筛选数据表中匹配财年和上月的记录
代码实现
情况1:财年为自然年(1月-12月)
若财年与日历年份完全一致,使用以下代码:
proc sql; select FISCAL_YEAR, MTH, Month_Name from 你的数据表名 where FISCAL_YEAR = 'FY' || put(year(intnx('month', today(), -1)), 4.) and MTH = month(intnx('month', today(), -1)); quit;
情况2:财年为跨年度(例如7月至次年6月)
若财年是每年7月到次年6月(如FY2023对应2022年7月-2023年6月),调整财年计算逻辑:
proc sql; select FISCAL_YEAR, MTH, Month_Name from 你的数据表名 where FISCAL_YEAR = 'FY' || put( ifn(month(intnx('month', today(), -1)) >=7, year(intnx('month', today(), -1)) +1, year(intnx('month', today(), -1)) ), 4.) and MTH = month(intnx('month', today(), -1)); quit;
关键函数说明
today():获取系统当前日期intnx('month', today(), -1):计算当前日期的上月日期(如当前是2023-08-01,返回2023-07-01)month(日期):提取日期对应的月份数字(1-12)year(日期):提取日期对应的年份put(数值, 4.):将数值转为4位字符型,用于拼接财年标识FYifn(条件, 真值, 假值):条件判断函数,根据上月月份确定财年年份
自定义财年规则
如果财年起始月份不是7月,只需修改month(...) >=7中的数字即可(比如财年从4月开始,改为>=4)。
内容的提问来源于stack exchange,提问作者Rogue258
相关产品推荐
相关产品推荐

