楼主: yingmudb
4212 10

[问答] 请教一个sql查询的程序 [推广有奖]

  • 0关注
  • 0粉丝

高中生

52%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
2 点
信用等级
1 点
经验
267 点
帖子
27
精华
0
在线时间
21 小时
注册时间
2007-1-24
最后登录
2014-4-7

楼主
yingmudb 发表于 2010-11-18 10:29:03 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
proc sql;
create table try.wj_new_20101117 as  
select a.*
from try.wj_new_20101117 a left join try.wj_20101116 b
on a.claimno~=b.claimno;
quit;

运行该段程序后日志提示:
NOTE: 执行该查询涉及到执行无法优化的一个或多个 Cartesian 产品连接。

然后生成的sas数据集就越来越大,大到最后磁盘都不够装了还没运行出结果:(

请教一下,这个查询程序该怎么修改呢?
二维码

扫码加我 拉你入群

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

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

关键词:sql left join proc sql Select Create 请教 程序 查询 sql

沙发
651dcg 发表于 2010-11-18 10:32:47
恭喜我升为硕士!…
这个世界

藤椅
soporaeternus 发表于 2010-11-18 10:46:53
proc sql;
create table try.wj_new_20101117 as  
select a.*
from try.wj_new_20101117 a
where a.claimno not in
(
select distinct claimno from try.wj_20101116
)
;
quit;

用不等于做连接条件貌似结果就是笛卡尔积全集减去用等号做连接条件的结果集,数量巨大可想而知
我一般用not in子查询
希望对你有帮助
Let them be hard, but never unjust

板凳
yingmudb 发表于 2010-11-18 11:12:05
修改后重新运行,又提示以下错误了:(
ERROR: Utility file open failed.

报纸
soporaeternus 发表于 2010-11-18 11:19:05
是不是由于目标表和原表名字重复,导致现在的原表不是原来的原表,而是那张硕大的表了啊,而硕大表由于意外中断而不完整......
尝试重新生成一下try.wj_new_20101117
还有目标表尽量不要和原表重名,那样会覆盖原表
Let them be hard, but never unjust

地板
yingmudb 发表于 2010-11-18 11:27:23
我的目标表名已经改成try.wj_update了,而且try.wj_new_20101117和try.wj_20101116都已经重新生成过了,结果提示出错。搞不懂了:(

7
soporaeternus 发表于 2010-11-18 13:00:26
还是报ERROR: Utility file open failed.?
重启下SAS还行不?
Let them be hard, but never unjust

8
yingmudb 发表于 2010-11-18 13:02:27
是的,还是报ERROR: Utility file open failed.

sas都重启好几次了。。

9
soporaeternus 发表于 2010-11-18 13:17:04
你看下这几张表单独读取会不会报错
然后抽各抽几条数据看看连接会不会有错
不是很清楚究竟是数据太大,还是别的什么原因导致的报错
两张表各多大啊?
Let them be hard, but never unjust

10
yingmudb 发表于 2010-11-18 15:00:13
抽取几条连接没有任何问题
我的数据也不会很大啊,try.wj_new_20101117才7万条数据,try.wj_20101116
才13万条数据
一个16M,一个31M大

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 00:03