我试图从表中提取数据以涵盖最后一个日历月.该报告可以在下个月的任何一天提取.我使用以下代码:
CURRENT DATE - 31 DAYS - DAYOFWEEK_ISO(CURRENT DATE) DAYS)
Run Code Online (Sandbox Code Playgroud)
但是,它从当前月份中提取信息等...是否有变量或某些东西确保只返回最后一个monts数据?
谢谢.
这是我的一个工作伙伴这样做的方式:
CURRENT DATE - DAY(CURRENT DATE) DAYS + 1 DAY - 1 MONTH
AND CURRENT DATE - DAY(CURRENT DATE) DAYS
Run Code Online (Sandbox Code Playgroud)
该INTNX功能是伟大的日期.下面是两个使用数据步骤进行子集化和使用Proc SQL进行子集化的示例.
data dates(drop=i);
input date:DATE9. @;
do i = 1 to 4;
input name $ weight @;
output;
end;
format date mmddyy10.;
datalines;
05FEB2012 Barbara 125 Alice 130 Ronald 170 John 160
04FEB2012 Barbara 122 Alice 133 Ronald 168 John 155
15FEB2012 Barbara 135 Alice 140 Ronald 190 John 180
25FEB2012 Barbara 142 Alice 113 Ronald 178 John 185
29FEB2012 Barbara 185 Alice 170 Ronald 160 John 150
04MAR2012 Barbara 192 Alice 183 Ronald 178 John 165
;
Data _null_;
call symputx('beg_dt',intnx('month',today(),-1,'b'));
call symputx('end_dt',intnx('month',today(),-1,'e'));
run;
Data subset;
set dates(where=(&beg_dt <= date <= &end_dt));
run;
PROC SQL noprint;
CREATE TABLE subset_sql AS
SELECT *
FROM dates
WHERE &beg_dt <= date <= &end_dt;
QUIT;
Run Code Online (Sandbox Code Playgroud)
INTNX生成日期值.除了MONTH(前一年,周)之外,间隔可以是很多东西.您甚至可以使用它来确定YEAR.N(其中N是您的会计年度开始的月份)的会计年度.
Data _null_;
Current_FY=year(intnx('year.9',today(),0,'e'));
put current_fy=;
run;
Run Code Online (Sandbox Code Playgroud)
最后(可选)参数用于对齐(Beginning,Middle,End或Same).
| 归档时间: |
|
| 查看次数: |
3304 次 |
| 最近记录: |