SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 641|回复: 0
打印 上一主题 下一主题

left join的奇怪问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2004-9-3 23:46:45 | 只看该作者

left join的奇怪问题

表a: code,crdt,crtm,id(说明:code为产品代码,crdt为日期,crtm为时间,id是一外关键字,稍后做计数用)
表b:code,start_date,start_time,end_date,end_time(各字段意义不言而喻)
目标:按照b中开始结束日期时间来计算code的个数(即count(id))

现语句如下:
proc sql noprint;
create table test as
select a.code,b.start_date,b.start_time,b.end_date,b.end_time,
count(id) as cc
from a left join b
on a.code=b.code and
a.crdt>=b.start_date and a.crtm>=b.start_time and
a.crdt<=b.end_date and a.crtm<b.end_time
quit;

也就是计算产品在开始日期时间到结束日期时间中的个数。不过现在的问题是这段语句运行之后产生的表中有很多时间段的cc都是0。a表中差不多有一半的数据未能归类到开始结束日期时间段中,但是通过两表对比发现,未归类的那些记录应该是归类在某一时间段中的。

另外,上述情况是日期跨度有6、7天的情况,如果日期跨度只有1天,也就是同一天内的不通时间段,该语句执行的结果却完全正常。偶研究了3天都麻油结果:(

另外,这些时间段的分割是相当严格的,这些分割两两没有交集,且并集就是这各日期的跨度

兄弟姐妹们帮忙啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-10 23:21 , Processed in 0.221744 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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