我想从 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; 

请您参考如下方法:

如果您连接到单个 DB2 实例并连接不同模式/数据库中的两个表,以下内容应该适合您:

proc sql; 
    connect to db2 as B (user=&userid. password=&userpw.  database=MY_DB); 
 
    create table test as 
    select * from connection to B ( 
            /* here we're in DB2 SQL */ 
        select t1.* from schema.table as t1 
                inner join schema2.table2 as t2 
            on t1.ID_NUM = t2.ID_NUM 
        ); 
   /* automatic disconnect at PROC SQL boundary */ 
quit; 

如果您与两个不同的服务器/两个用户帐户交谈,则可以使用没有直通的异构连接。那么 ID_NUM 值的预期数量将很重要。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!