Sql 日期时间相同的记录被错误地视为不同的事件
我有一张捕获表,是在不同的摄像站拍摄的不同动物的时间戳照片。我想计算出每只动物对每个摄像站的访问频率,使用一列NewVisit来标记每次新访问的第一个记录 对于每次就诊记录,在Sql 日期时间相同的记录被错误地视为不同的事件,sql,datetime,Sql,Datetime,我有一张捕获表,是在不同的摄像站拍摄的不同动物的时间戳照片。我想计算出每只动物对每个摄像站的访问频率,使用一列NewVisit来标记每次新访问的第一个记录 对于每次就诊记录,在StationID处可能有一个或多个相同AnimalID的记录VisitStart是每次访问期间最早捕获/记录的cDateTime。同样,VisitEnd是访问的最新捕获 我编写了以下查询,当记录的VisitStart与记录日期相同时,将记录标记为New Visit UPDATE Capture SET Captu
StationID
处可能有一个或多个相同AnimalID
的记录VisitStart
是每次访问期间最早捕获/记录的cDateTime
。同样,VisitEnd
是访问的最新捕获
我编写了以下查询,当记录的VisitStart
与记录日期相同时,将记录标记为New Visit
UPDATE Capture
SET Capture.NewVisit = Yes
WHERE (((Capture.VisitStart)=Capture.cDateTime) And
((Capture.SurveyID)=1) And
((Capture.SpeciesID)=1));
这种方法适用于大多数访问,但有时会有多条记录具有完全相同的时间戳(当相机连续拍摄3张照片时会出现这种情况)。在这种情况下,我的查询将所有3条记录标记为NewVisit
有没有办法阻止这种情况的发生,通过指定如果有超过1条记录具有相同的StationID
、SpeciesID
、AnimalID
和cDateTime
,则NewVisit
仅对其中一条记录有效,例如CaptureID
最低的记录
下面是运行NewVisit
查询后我的表的一个示例:
CaptureID SurveyID StationID SpeciesID AnimalID TRANScDateTime VisitStart NewVisit
1307 1 5 1 5 15/07/2013 08:04:50 15/07/2013 08:04:50 TRUE
8172 1 5 1 2 15/07/2013 08:04:50 15/07/2013 08:04:50 TRUE
1306 1 5 1 2 15/07/2013 08:04:50 15/07/2013 08:04:50 TRUE
8173 1 5 1 2 15/07/2013 08:04:50 15/07/2013 08:04:50 TRUE
1308 1 5 1 2 15/07/2013 08:04:51 15/07/2013 08:04:50 FALSE
8174 1 5 1 5 15/07/2013 08:04:51 15/07/2013 08:04:50 FALSE
1309 1 5 1 5 15/07/2013 08:08:40 15/07/2013 08:04:50 FALSE
CaptureID
是主键 试试这个:
UPDATE TOP (1) Capture
SET Capture.NewVisit = Yes
WHERE Capture.VisitStart=Capture.cDateTime
ORDER BY Capture.CaptureID,
Capture.SurveyID,
Capture.StationID,
Capture.SpeciesID,
Capture.AnimalID,
Capture.TRANScDateTime;
你在使用什么数据库?请适当地标记查询。您的示例数据没有名为
cDateTime
或SpeciesId
的字段。请修复此问题,使数据与您使用的查询相匹配。谷歌“更新排名1”。这个问题以前已经被问过很多次了。数据库名为Camera Base,MS Access 2010,可免费下载。欢迎使用StackOverflow。请给你的答案加上一些解释。只有代码的答案(有时)是好的,但代码+解释(大多数时候)会让答案更好。