Ms access 如何获取今天记录的最小值(时间)和前一天记录的最大值(时间)

Ms access 如何获取今天记录的最小值(时间)和前一天记录的最大值(时间),ms-access,sql-server-2000,Ms Access,Sql Server 2000,使用MS-Access数据库 我想显示今天记录的最小值(时间)和前一天记录的最大值(时间) 桌子 等等 从上表中,我想显示今天的最小值(时间)和前一天的最大值(时间) “前一天”指的不是昨天,而是特定人员id的前一个cardeventtime 我正在使用子查询 我使用下面提到的查询 "SELECT PERSONID, CARDEVENTDATE, MIN (CARDEVENTTIME) AS INTIME, MAX (CARDEVENTTIME) AS OUTTIME FROM (SE

使用MS-Access数据库

我想显示今天记录的最小值(时间)和前一天记录的最大值(时间)

桌子

等等

从上表中,我想显示今天的最小值(时间)和前一天的最大值(时间)

“前一天”指的不是昨天,而是特定人员id的前一个cardeventtime

我正在使用子查询

我使用下面提到的查询

"SELECT PERSONID, CARDEVENTDATE, MIN (CARDEVENTTIME) AS INTIME, 
    MAX (CARDEVENTTIME) AS OUTTIME FROM (SELECT T_PERSON.PERSONID, 
    T_CARDEVENT.CARDEVENTDATE, T_CARDEVENT.CARDEVENTTIME 
FROM (T_TITLE INNER JOIN T_PERSON ON T_TITLE.TITLECODE = T_PERSON.TITLECODE)
    INNER JOIN T_CARDEVENT ON T_PERSON.PERSONID = T_CARDEVENT.PERSONID 
WHERE T_CARDEVENT.CARDEVENTDATE BETWEEN '" & sdate & "' AND '" & edate & "' 
ORDER BY T_PERSON.TITLECODE) GROUP BY PERSONID, CARDEVENTDATE))"
但我无法获得前一天的最大值(时间)。我想获得特定人员id的今天最小(时间)和前一天最大(时间)

“前一天”指的不是昨天,而是特定人员id的前一个cardeventtime

预期产出

PERSON ID  CARDEVENTDATE  MIN TIME  CARDEVENTDATE  MAX TIME
5008       20090818       110000    20090813       200000
5008       20090813       090000    20090809       220000
5008       20090809       180000    20090805       140000
3405       20090809       070000    20090805       180000
3010       20080810       100000    20080806       230000
等等

需要查询帮助。

放弃最后的答案

假设您将查询保存为DAYMINMAX。
您需要创建另一个查询:

SELECT a.PERSONID  
     , MAX(b.CARDEVENTDATE) AS PREVDAY  
     , a.CARDEVENTDATE AS NEWDAY  
    FROM DAYMINMAX AS a INNER JOIN  
         DAYMINMAX AS b ON a.PERSONID = b.PERSONID  
                       AND a.CARDEVENTDATE > b.CARDEVENTDATE  
    GROUP BY a.PERSONID, a.CARDEVENTDATE  
该查询为每个人提供一个日期及其上一个日期。让我们把它命名为新的。现在,您还需要另一个查询(您想要的查询):


由于原始查询多次被引用以创建所需的答案,因此最好将其创建为单独的查询,而不是使用子查询。

感谢您删除了上限…为什么您的输出包含三行5008?我想我还不太明白你的逻辑,无法给你答案。我想按照你的描述,每个人应该有一排。@Wilhelm。在联接运算符中显示语法错误-GOPALSAM未得到正确答案
SELECT a.PERSONID  
     , MAX(b.CARDEVENTDATE) AS PREVDAY  
     , a.CARDEVENTDATE AS NEWDAY  
    FROM DAYMINMAX AS a INNER JOIN  
         DAYMINMAX AS b ON a.PERSONID = b.PERSONID  
                       AND a.CARDEVENTDATE > b.CARDEVENTDATE  
    GROUP BY a.PERSONID, a.CARDEVENTDATE  
SELECT a.PERSONID  
     , a.PREVDAY  
     , b.OUTTIME  
     , a.NEWDAY  
     , c.INTIME  
    FROM (DAYPREVNEW AS a INNER JOIN
         DAYMINMAX AS b ON a.PERSONID = b.PERSONID AND a.PREVDAY = b.CARDEVENTDATE) INNER JOIN DAYMINMAX AS c ON a.PERSONID = c.PERSONID AND a.NEWDAY = c.CARDEVENTDATE