2009-06-28 52 views
0

使用MS Access數據庫如何獲得今天的記錄分鐘(時間)和前一天紀錄最大(時間)

我想顯示今天記錄分鐘(時間)和前一天紀錄最大(時間)

PERSON ID CARDEVENTDATE CARDEVENTTIME 
5008  20090805  080000 
5008  20090805  140000 
5008  20090809  180000 
5008  20090809  220000 
5008  20090813  090000 
5008  20090813  200000 
5008  20090818  110000 
5008  20090818  232200 
3405  20090805  080000 
3405  20090805  180000 
3405  20090809  070000 
3405  20090809  230000 
3010  20080806  090000 
3010  20080806  230000 
3010  20080810  100000 
3010  20080810  160000 

等等...

從上面的表格我想顯示今天分鐘(時間)和前一天最大值(時間)

上一天表示不是昨天,此特定人員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的今日分鐘(時間)和前一天最大時間(時間)。

上一天意味着不是昨天,以前的cardeventtime是針對特定人員的id。

預期產量。

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 

等等...

需要查詢的幫助。

+0

感謝您取下筆帽...... – 2009-06-28 05:59:49

+0

爲什麼您的輸出包含三行5008?我不認爲我理解你的邏輯足以給你一個答案。我認爲它應該在你的描述中每個personID有1行。 – 2009-06-28 14:19:10

回答

1

報廢最後的答案。

假設您將查詢保存爲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 

該查詢給你一個日期和以前的每人日期。我們將其命名爲DAYPREVNEW。現在,你需要另外一個查詢(一個你想要的):

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 

你原來的查詢被引用這麼多次,以創建所需要的答案,最好是將其創建爲比使用一個單獨的查詢子查詢。

相關問題