2017-10-05 13 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)'のSynthax Errorを返す。(PS 't'は定義されていない?) – CACC

+0

' t'は以下のように定義される。 'MYTABLE'のエイリアスは' FRT MYTABLE t'です。 SQLをより明示的にしたい場合は、 'FROM MYTABLE As t'に変更できますが、これは余分なテキストです。現在の編集を確認してください。 'Date'はキーワードであり、フィールド名には使用しないでください。 –

+0

残念ながら、それはまだ動作しません。たぶん、私は予想された結果を追加したという質問で十分に明確ではなかったでしょう。申し訳ありません。 – CACC

関連する問題