Select 使用 sas proc 来自库的第 n 个数据集 sql

Select nth dataset from library using sas proc sql

我有一个保存月度数据的库,我想 select 最近三个月的数据。 对于最新数据,我使用了以下代码。 期望的结果是为三个月的数据创建 &data、&data1、&data2。

PROC SQL;
SELECT MEMNAME INTO: DATA FROM DICTIONARY.TABLES
WHERE UPCASE(MEMNAME) = 'LIBNAME'
AND UPCASE(MEMNAME) LIKE 'DATA20%'
AND LENGTH(MEMNAME)=10 AND NOBS > 1
ORDER BY MEMNAME DESCENDING;
QUIT;

我尝试在 order by 语句之前添加 where monotonic() = 2 但它通过升序给了我第二个数据。 怎么才能降序提取呢

看看你是否可以将其用作模板

data data202001; set sashelp.class; run;
data data202002; set sashelp.class; run;
data data202003; set sashelp.class; run;
data data202004; set sashelp.class; run;
data data202005; set sashelp.class; run;
data data202006; set sashelp.class; run;
data data202007; set sashelp.class; run;
data data202008; set sashelp.class; run;

proc sql outobs=3 noprint;
   select memname into :data1 -
   from dictionary.tables
   where libname = "WORK" 
      and upcase(memname) like "DATA%"
      and nobs > 1
   order by memname desc;
quit;

%put &data1. &data2. &data3.;

打印:

DATA1=DATA202008 DATA2=DATA202007 DATA3=DATA202006

您可以使用 Proc SQL 选项 OUTOBS= 将输出限制为结果集的前 N ​​行。

示例:

PROC SQL;
reset noprint outobs=3;

SELECT MEMNAME INTO: DATA separated by ' '
FROM DICTIONARY.TABLES
WHERE LIBNAME = 'SASHELP'
AND MEMNAME LIKE 'C%'
AND NOBS > 1
ORDER BY MEMNAME DESCENDING
;
QUIT;

%put &=DATA;

日志

DATA=CP951 COUNTSERIES COMET