2017-10-05 144 views
0

我有一個Access表。在Access中選擇記錄和最近日期

ID Field1 Field2 Date 
1 un_1 x  201701 
2 un_2 y  201704 
3 un_1 z  201702 
4 un_3 a  201703 
5 un_2 b  201709 

我想採取此表的唯一(Field1)記錄,其中Date是最近的。

我想:

SELECT ID, Field1, Field2, Date 
FROM MYTABLE 
WHERE Date=SELECT(MAX(MYTABLE.Date) FROM MYTABLE WHERE ID=MYTABLE.ID) 
GROUP BY Field1; 

但它無法正常工作。

至於結果,我期望:

un_1 z  201702 
un_2 b  201709 
un_3 a  201703 
+0

隨着樣本數據,什麼是預期的結果? – jarlh

+0

跳過GROUP BY。用圓括號括起子查詢。 – jarlh

回答

0

你的語法是錯誤的。你需要把括號周圍的子查詢,這樣,你需要添加的代名詞你的表,因爲你使用同一個表兩次:

SELECT ID, Field1, Field2, Date 
FROM MYTABLE i 
WHERE MYTABLE.[Date]=(SELECT MAX(t.[Date]) FROM MYTABLE t WHERE t.ID=i.ID) 
ORDER BY Field1; 
+0

謝謝。它在'Date =(SELECT MAX(t.Date)FROM MYTABLE t WHERE t.ID = MYTABLE.ID)'(PS't'沒有被定義,是嗎?)返回Synthax錯誤' – CACC

+0

't'被定義爲'MYTABLE'的別名在這裏:'FROM MYTABLE t'。如果你希望你的SQL更加明確,你可以將它改爲'FROM MYTABLE As't''',但這只是額外的文本。檢查當前的編輯,「日期」是一個關鍵字,不應該用於字段名稱 –

+0

不幸的是,它仍然無法正常工作。也許我在添加預期結果的問題上不夠清楚。對於那個很抱歉。 – CACC

相關問題