2016-06-11 68 views
0

我有一個包含CHECKTIME,USERID和CHECKTYPE的表。此CHECKTIME類型是日期時間。我想獲取這些數據,而不需要重複CHECKTIME日期。例如我的數據是這樣的:在女士Access中選擇所有帶有group by子句的字段

USERID | CHECKTIME   | CHECKTYPE 
1  | 2016-05-01 06:58:00 | I 
1  | 2016-05-01 06:59:00 | I 
1  | 2016-05-02 06:58:00 | I 
1  | 2016-05-02 06:58:10 | I 
1  | 2016-05-02 06:59:00 | I 

有誰知道如何刪除重複日期?所以,從上面的數據,我可以得到結果如下:

USERID | CHECKTIME   | CHECKTYPE 
1  | 2016-05-01 06:58:00 | I 
1  | 2016-05-02 06:58:00 | I 

我已經嘗試使用不同的,但它沒有工作,因爲我必須爲每個檢查時間不同的時間。而且我已經使用了GROUP BY子句,但它只能給我1個字段的結果。

我的查詢現在的問題是這樣的:

SELECT USERID, CHECKTYPE, CHECKTIME, DAY(CHECKTIME) 
FROM CHECKINOUT 
WHERE USERID = 259 
AND MONTH(CHECKTIME)='5' 
AND YEAR(CHECKTIME)='2016' 
AND CHECKTYPE = 'I' 
GROUP BY DAY(CHECKTIME) 
ORDER BY DAY(CHECKTIME) ASC 

,並與有關聚合函數錯誤卡梅斯。

+0

你想從表中刪除重複的 - 或者只是讓他們在查詢中查看唯一記錄? – dbmitch

+0

不刪除它,但顯​​示它沒有重複的行。這就像使用group by,但不知道爲什麼我的group by子句在訪問中不起作用 –

+0

好吧 - 更新後的SQL低於 – dbmitch

回答

1

你需要時間嗎?

SELECT DISTINCT 
USERID, Format([CHECKTIME],"yyyy/mm/dd") AS CHECKDATE, CHECKTYPE 
FROM CHECKINOUT; 

結果在兩個記錄沒有時間

USERID | CHECKTIME | CHECKTYPE 
1  | 2016-05-01 | I 
1  | 2016-05-02 | I 

或者,您在找第一次爲每個唯一的一天嗎?這將做到這一點

編輯:添加按日期CLAUSE

SELECT DISTINCT USERID, CHECKTYPE, 
    Format([CHECKTIME],"yyyy/mm/dd") AS CHECKDATE, 
    Min(CHECKINOUT.CHECKTIME) AS FirstCheckTime 
FROM CHECKINOUT 
WHERE (Month([CheckTime])=5) AND (Year([CheckTime])=2016) 
GROUP BY USERID, CHECKTYPE, Format([CHECKTIME],"yyyy/mm/dd") 
HAVING ((USERID=1) AND (CHECKTYPE="I")) 
ORDER BY Format([CHECKTIME],"yyyy/mm/dd"); 

是這樣的:

USERID CHECKTYPE CHECKDATE FirstCheckTime 
1   I  2016/05/01 2016-05-01 06:58:00 
1   I  2016/05/02 2016-05-02 06:58:00 
+0

事實上,我需要第一次簽入每一天。仍然需要時間,不僅僅是日期。這就像是MIN子句,這就是爲什麼我有ORDER BY子句 –

+0

爲你更新了替代SQL子句 – dbmitch

+0

它不會導致你的第二個子句的數據.. - 編輯,對不起,我只是改變了userid,它工作順利......謝謝你這麼多。 –