SAS传递SQL - 多个DB

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)

Joe*_*Joe 1

您无法对另一个传递查询执行传递查询,除非您的两个数据库以某种可以在本机系统中利用的方式自然连接。

执行此类操作的唯一方法是执行查询connection to A并将结果存储在宏变量(ID_NUM 列表)中,然后将该宏变量插入到 的查询中connection to B

最好不要在此处显式使用传递,而是libname像平常一样使用和执行查询。SAS 很可能会在这里帮助您并为您完成工作,而无需首先实际复制 B 的所有行。