全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5350 7
2013-09-21
请问一下SAS大神们,我想查找A表与B表共有的数据(或者子集):
proc sql;
create table cmc as select * from a
where stkcd
in (select stkcd from b);
quit;



data work;
merge a b;
by stkcd;
run;
data work;
set work;
if cityname^=' ';
run;


两个程序得到的观测个数有差异,不知道是哪里的问题。想请教一下各自程序运行的原理~~
或者如果有更好的方法,请不吝赐教!
非常感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-9-22 06:27:56
能不能贴点数据片段出来?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-9-22 07:21:05
sql没有考虑到cityname非空的情况,两边条件不一样,结果不一样也不稀奇
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-9-22 09:12:05
这两种方式差别非常大,merge有些先天缺陷,多对多情况下不建议使用。看个图: combine_vertically.png
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-9-22 18:29:14
tangliang0905 发表于 2013-9-22 07:21
sql没有考虑到cityname非空的情况,两边条件不一样,结果不一样也不稀奇
谢谢哈~检查了一下,没有空的情况 感觉应该不是这个问题~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-9-22 18:31:21
ferriswu 发表于 2013-9-22 09:12
这两种方式差别非常大,merge有些先天缺陷,多对多情况下不建议使用。看个图:
谢谢!请问join函数呢?而且如果A数据集包含B数据集的话,是不是应该不存在多对对的这个问题?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群