SAS SQL JOIN增加行而不是匹配行

时间:2014-09-04 15:15:23

标签: sql join sas

我在SAS中使用完全外连接时遇到问题 我想加入两个数据库。 A是包含患者ID,SEX,RACE,blablabla的“妈妈”......但是没有状态变量。 B是仅包含ID和状态的B. 所以A实际上是一个比B更大的数据库,我要做的就是将B包括状态放入A.这是我的代码:

proc sql;
CREATE TABLE C AS
select *
from A full outer join B
on A.id=B.id ;
RUN;

我得到的结果实际上并没有合并两个数据库。相反,我得到了数据库C,其中A的所有数据都在顶部(状态变量为空),然后数据B跟随A(状态变量在那里,但所有其他变量显示为Null)。因此,我所做的只是添加行....

以下是我的代码的一些条件; 我使用大学版 2. ID的格式实际上是Char。由于B的ID(例如:BD123),我将数字变量ID从A转换为char变量。

任何人都可以帮我这个吗?非常感谢你:-D

2 个答案:

答案 0 :(得分:0)

如果你有一个完整的连接(A中有100行,B中有15行,C中有115行),那么在转换时你可能没有正确匹配ID变量格式。您可能会遇到其他空格或类似问题(B.id的长度可能与A.id不匹配)。如果可能的话,我会将ID转换为数字,或者更仔细地转换为字符。

其次,如果您打算只获取A的行数(只是将B信息添加到A),那么您需要left join而不是full outer join

答案 1 :(得分:0)

我认为你可能正在考虑左连接。

proc sql;
   create table C as 
   select A.*, B.* 
   from A left join B 
   on A.ID=B.ID;
quit;