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;