Join 使用不同的数据类型连接两个数据库集
试图联接两个数据集,但联接基于两种不同的数据类型(数字和文本) 这是行不通的 我可以创建一个新数据集(复制现有数据集并添加一个数字列),如下所示:Join 使用不同的数据类型连接两个数据库集,join,sas,Join,Sas,试图联接两个数据集,但联接基于两种不同的数据类型(数字和文本) 这是行不通的 我可以创建一个新数据集(复制现有数据集并添加一个数字列),如下所示: CNUMBER1=CNUMBER*1; run; 然后当我使用这个副本加入时,它会起作用。。。但实际上我想尝试找出使用直接Oracle连接的方法。 在Oracle中,我会: on to_char(c.CNUMBER)=to_char(c.CNUMBER) 疯狂猜测你真正想要的是什么: PROC SQL; CONNECT TO ORACLE (
CNUMBER1=CNUMBER*1;
run;
然后当我使用这个副本加入时,它会起作用。。。但实际上我想尝试找出使用直接Oracle连接的方法。
在Oracle中,我会:
on to_char(c.CNUMBER)=to_char(c.CNUMBER)
疯狂猜测你真正想要的是什么:
PROC SQL;
CONNECT TO ORACLE (...);
CREATE TABLE oracle_results AS
SELECT * FROM CONNECTION TO ORACLE (
SELECT *
FROM D1.T1 c
INNER JOIN
D1.T2 d
on to_char(c.CNUMBER)=d.CNUMBER);
DISCONNECT FROM ORACLE;
QUIT;
将SAS会话连接到Oracle,执行显式直通SQL查询,并将结果传回SAS表
Oracle\u results
。用您的Oracle连接凭据替换圆点。能否提供您要加入的数据示例?这将使调试更容易。您的第一个查询将无法工作,因为您为两个表提供了相同的别名c
。问题是什么?你的to_char()
行得通吗?这个问题肯定还缺什么。输入
功能应该可以正常工作。您能否验证c.CNUMBER
是数字,而d.CNUMBER
是字符?你说的“不起作用”是什么意思?它会给出一个错误吗?产生意想不到的结果?我觉得这是对的。怎么了?
PROC SQL;
CONNECT TO ORACLE (...);
CREATE TABLE oracle_results AS
SELECT * FROM CONNECTION TO ORACLE (
SELECT *
FROM D1.T1 c
INNER JOIN
D1.T2 d
on to_char(c.CNUMBER)=d.CNUMBER);
DISCONNECT FROM ORACLE;
QUIT;