繁体   English   中英

Proc Sql中的SAS子查询

[英]SAS Subquery in Proc Sql

我有一个表,其中包含libname及其表的列表。 我想创建一个子查询以返回列出的每个表的最短日期,并将libname和表作为子查询中使用的libname.table传递。

我创建了以下内容:

proc sql;
create table createdon_min as
select *,
cats("(select min(createdon) from "||strip(libname)||"."||strip(table_name)||")") as CREATEDON_FRM
from all_tables1
where freq="DAILY" AND part_date="CREATEDON";
quit;

不会产生错误,但是createdon_frm值不会执行,它只会创建一个字符串值,例如“(从pvaprov.institutionalal中选择min(createdon))”。

libname和表已正确解析,但是如何使该语句作为子查询执行?

您不能从另一个SQL查询动态调用SQL查询。 此解决方案使用datastep并调用execute来执行proc sql并将结果附加到基本数据集。

data want;
 length mincreatedon 8.;
 stop;
run;

data _null_;
 set all_tables1;
 where freq="DAILY" AND part_date="CREATEDON";
 call execute("proc sql;create table a as select min(createdon) as mincreatedon from "||strip(libname)||"."||strip(table_name)||";quit;proc append base=want data=a;run;");
run;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM