|
楼主
楼主 |
发表于 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天都麻油结果:(
另外,这些时间段的分割是相当严格的,这些分割两两没有交集,且并集就是这各日期的跨度
兄弟姐妹们帮忙啊 |
|