我写的如下:
语句一:
select c.id,cname,area,levels,c.site,c.uid,work_no,visitrec,qm,nexttimegj,d.addtime
from zs_khinfo c,zs_gzrec d
where
c.id in (select fid from zs_khinfo a,zs_gzrec b where b.fid=a.id and datediff(day,nexttimegj,getdate())=0
and levels <> 'O ') and c.id=d.fid order by d.addtime desc
语句二:
select c.id,cname,area,levels,c.site,c.uid,work_no,visitrec,qm,nexttimegj,d.addtime
from zs_khinfo c,zs_gzrec d
where nexttimegj in (select Max(nexttimegj) from zs_khinfo a,zs_gzrec b where b.fid=a.id and levels <> 'O ' Group By fid) and c.id=d.fid and levels <> 'O ' order by d.addtime desc
功能说明:
数据表分别有 公司表zs_khinfo 跟踪记录表zs_gzrec
主要字段:nexttimegj 作用就是跟踪时间 类型:smalldatetime
每个公司都有N条跟踪记录,比如: 某公司 跟踪时间有 13号 15号 17号
比如今天到了15号,就应该显示这个公司信息出来,但是所显示出来的信息必须是这个公司的最新信息,也就是17号的,而不是15号的,如果现在又填了一条,就应该马上显示这一条信息,按照添加时间顺序来显示最新一条,但是有一个条件必须得满足,就是跟踪时间必须符合 我所填的公司记录中的跟踪时间 如果跟踪时间有 13号 15号 17号,今天是15号,就可以显示该公司最新的信息,如果16号就不需要显示
这条SQLSERVER语句该如何写,可以参照我上面的语句的表和字段,谢谢!!
------解决方案--------------------------------------------------------
LEFT JOIN 一下,再WHERE 过滤一下时间就OK了.