use*_*897 6 sql sas pass-through
我想从DB2中检索与DB1表中的标识符匹配的记录列表,如常规SAS子查询.如何使用SAS传递SQL执行此操作?
使用常规SAS SQL在db1上执行(长而复杂)SQL太慢了,这就是我使用传递SQL的原因.
我试过以下但没有运气:
proc sql;
connect to db1 as A (user=&userid. password=&userpw. database=MY_DB);
connect to db2 as B (user=&userid. password=&userpw. database=MY_DB);
create table test as
select * from connection to B (
select * from schema.table
Where ID_NUM =
(select * from connection to A
(select ID_NUM from schema2.table2)
);
);
disconnect from A;
disconnect from B;
quit;
Run Code Online (Sandbox Code Playgroud)
您无法对另一个传递查询执行传递查询,除非您的两个数据库以某种可以在本机系统中利用的方式自然连接。
执行此类操作的唯一方法是执行查询connection to A
并将结果存储在宏变量(ID_NUM 列表)中,然后将该宏变量插入到 的查询中connection to B
。
最好不要在此处显式使用传递,而是libname
像平常一样使用和执行查询。SAS 很可能会在这里帮助您并为您完成工作,而无需首先实际复制 B 的所有行。