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
我有一个保存月度数据的库,我想 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