我想从 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 值的预期数量将很重要。
关于sql - SAS 直通 SQL - 多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19255905/