2016-11-04 4 views
1

...のMySQL - 次のデータを使用して、各データグループの見返り最後のレコード

+--------------+--------+---------------+-----------------+----------------+ 
| EQUIPMENT_ID | CML_ID | INSPECTION_NO | INSPECTION_DATE | WALL_THICKNESS | 
+--------------+--------+---------------+-----------------+----------------+ 
| B1000-V001 | 1  | 1    | 1/01/2016  | 10    | 
| B1000-V001 | 1  | 2    | 2/01/2016  | 9    | 
| B1000-V001 | 1  | 3    | 3/01/2016  | 3    | 
| B1000-V001 | 1  | 4    | 4/01/2016  | 7    | 
| B1000-V001 | 1  | 5    | 5/01/2016  | 5    | 
| B1000-V001 | 1  | 6    | 6/01/2016  | 4    | 
| B1000-V001 | 1  | 7    | 7/01/2016  | 4    | 
| B1000-V001 | 1  | 8    | 8/01/2016  | 8    | 
| B1000-V001 | 1  | 9    | 9/01/2016  | 17    | 
| B1000-V001 | 1  | 10   | 10/01/2016  | 5    | 
| B1000-X123 | 5  | 1    | 1/01/2016  | 2    | 
| B1000-X123 | 5  | 2    | 2/01/2016  | 8    | 
| B1000-X123 | 5  | 3    | 3/01/2016  | 4    | 
| B1000-X123 | 5  | 4    | 4/01/2016  | 5    | 
| B1000-X123 | 5  | 5    | 5/01/2016  | 7    | 
| B1000-P789 | 3  | 1    | 1/01/2016  | 8    | 
| B1000-P789 | 3  | 2    | 2/01/2016  | 7    | 
| B1000-P789 | 3  | 3    | 3/01/2016  | 5    | 
| B1000-P789 | 3  | 4    | 4/01/2016  | 1    | 
| B1000-P789 | 3  | 5    | 5/01/2016  | 4    | 
+--------------+--------+---------------+-----------------+----------------+ 

私は、次の結果を生成するための最速の方法をしたい...

+--------------+--------+---------------+-----------------+----------------+ 
| EQUIPMENT_ID | CML_ID | INSPECTION_NO | INSPECTION_DATE | WALL_THICKNESS | 
| B1000-V001 | 1  | 10   | 10/01/2016  | 5    | 
| B1000-P789 | 3  | 5    | 5/01/2016  | 4    | 
| B1000-X123 | 5  | 5    | 5/01/2016  | 7    | 
+--------------+--------+---------------+-----------------+----------------+ 

すなわちGROUP BY EQUIPMENT_ID 、CML_IDを返し、常に最大検査番号に関連付けられたレコードを返します。

+1

http://stackoverflow.com/questions/3491329/group-by-with-maxdate?noredirect=1&lq=1これは必要なものです。 –

+0

@Ashokよろしくお願いいたします。この問題には、ここでは多くの良い解決策があります。 – Josh

+0

[_Groupwise max problem_](https://mariadb.com/kb/en/mariadb/groupwise-max-in-mariadb/)のようなソムズ –

答えて

0

以下のクエリを試してください。

Select a.Equipment_ID, a.CML_ID, b.INSPECTION_NO,a.INSPECTION_DATE, a.WALL_THICKNESS 
    from 
    #YourTable a inner join 
    (
    Select Equipment_ID, CML_ID, max(INSPECTION_NO)as INSPECTION_NO 
    from #YourTable 
    Group By Equipment_ID,CML_ID 
    ) b 
    on a.Equipment_ID=b.Equipment_ID and a.CML_ID=b.CML_ID and a.INSPECTION_NO=b.INSPECTION_NO 
    order by a.Equipment_ID 

SQL_FIDDLE:DEMO

ご質問やご不明な点があればお聞かせください。

+0

応答のためにありがとうが、イチゴとashokはすでに応答を提供しています。 – Josh

関連する問題