SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

12
返回列表 发新帖
楼主: shiyiming
打印 上一主题 下一主题

初来咋到,请教一个多对多的数据合并问题!谢谢!

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
11#
 楼主| 发表于 2003-10-31 12:04:57 | 只看该作者
上面的output 数据库中记录:
d 7
e 8
中的7和8应是var3的数据,可能这里发帖子只有一个空格所致,大家不要误会!

再次谢谢willon,jerry!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
12#
 楼主| 发表于 2003-10-31 13:03:19 | 只看该作者

HOW ABOUT THIS?

proc sql;
create table c as
select coalesce(a.var1,b.var1) as var1,a.var2 ,b.var2 as var3
from a
full join b on a.var1=b.var1;
quit;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
13#
 楼主| 发表于 2003-10-31 13:13:15 | 只看该作者

Perfect! Thanks!!!

Excellent work!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
14#
 楼主| 发表于 2003-11-11 02:35:18 | 只看该作者
proc sql;
create table output as
select coalesce(a.var1,b.var1)as var1, a.var2,b.var2 as var3
from a full join b
on a.var1=b.var1
order by var1,var2,var3;
quit;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
15#
 楼主| 发表于 2003-11-11 13:16:45 | 只看该作者

hi

其实这样写更简单,效率也更高:

data temp;
  merge a b;
  by var1;       
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
16#
 楼主| 发表于 2003-11-11 18:12:19 | 只看该作者
merge 和sql full join的作用原理不一样
merge不会产生笛卡尔乘积,而sql会,所以应根据不同情况选择相应的语句

merge合并时虽不产生笛卡尔乘积,但也不是一一对应的,所以用merge需要比较谨慎
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
17#
 楼主| 发表于 2003-11-13 00:38:16 | 只看该作者
Result may not right when you merge many to many. Be careful !
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-1-7 12:59 , Processed in 0.296354 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表