2016-05-27 14 views
0

私は各IDの最後のレコードを欲しいと私にデータをグループ化しようとしていますが、どうすればいいですか?このように私の問題を解決するためのアクセスにMySQL /日付でデータを並べ替えてグループ化する

SELECT Table1.id, Last(Table1.status) AS LastStatus, Last(Table1.date) AS LastDate 
FROM Table1 
GROUP BY Tabele1.id; 

私のテーブル

____________________________ 
| ID | STATUS | DATE | 
|123456| 1 | 15/04/2016 | 
|123456| 2 | 16/04/2016 | 
|123456| 3 | 17/04/2016 | 
|123456| 1 | 18/04/2016 | 
|654321| 3 | 19/04/2016 | 
|654321| 4 | 20/04/2016 | 
|654321| 2 | 21/04/2016 | 
|98765 | 3 | 22/04/2016 | 
|98765 | 1 | 23/04/2016 | 
|98765 | 2 | 24/04/2016 | 
|98765 | 3 | 25/04/2016 | 
------------------------------ 

望ましい結果は、各IDの最後のレコードです。

____________________________ 
| ID | STATUS | DATE | 
|123456| 1 | 18/04/2016 | 
|654321| 2 | 21/04/2016 | 
|98765 | 3 | 25/04/2016 | 
------------------------------ 
+0

'MAX(日付)を選択...グループID、ステータス '? –

答えて

0

あなたはID

select * from my_table 
where (id, date) in ( select id, max(date) 
         from my_table 
         group by id ) 
order by date 

またはのためのTHX最大の日付を返すサブクエリでどこを使用することができますが、状況によって順序が必要な場合は

select * from my_table 
where (id, date) in ( select id, max(date) 
         from my_table 
         group by id ) 
order by status 
+0

それは動作しますが、そうでなければサブクエリはありませんか? (ご協力ありがとうございました)。 –

+0

私はこの方法を知っています。あなたはサブクエリが好きではないのはなぜですか?max(日付)と一致するサブセットが必要です。これは最も簡単な方法です。 – scaisEdge

+0

サブクエリが好きです。問題は十分なサブクエリを使用することです。 –

関連する問題