2017-05-18 10 views
1

以下の構造があります。一つのテーブルではなく、単純な、それを維持することではない:グループで行を選択し、JPQLでmaxを選択

Press  | Batch  | Start time 
------------------------------------------------- 
PRESS_1  | 2051   | 2017-05-18T00:00:00 
PRESS_1  | 2052   | 2017-05-19T00:00:00 
PRESS_2  | 2053   | 2017-05-20T00:00:00 
PRESS_2  | 2054   | 2017-05-16T00:00:00 
PRESS_3  | 2055   | 2017-05-12T00:00:00 
PRESS_3  | 2056   | 2017-05-18T00:00:00 
PRESS_3  | 2057   | 2017-05-19T00:00:00 

私は、各プレスの最後の計画のバッチを取得したいです。結果は次のようになります:

Press  | Batch  | Start time 
------------------------------------------------- 
PRESS_1  | 2052   | 2017-05-19T00:00:00 
PRESS_2  | 2053   | 2017-05-20T00:00:00 
PRESS_3  | 2057   | 2017-05-19T00:00:00 

ただし、私がグループ化してバッチを選択したい場合は、私は、バッチを 'Group By'句に入れる義務があります。

Select x.Press, x.Batch, max(x.StartTime) 
From myTable x 
Group by x.Press 

これはJPQLを使用してどのように達成できますか?あなただけのそれぞれにあなたのバッチ増加は、開始時間と仮定して、同様のバッチから最大を得ることができる必要があり

+0

@ Veljko89 PRESS_2のように、これは必ずしもそうとは限りません。 – Hazaart

+0

この質問はここで何度も答えられています。質問を投稿する前にいくつかの調査をしてみてください。 –

+0

@GiorgosBetsosこれはGoogleに適切な言葉を見つけるのはかなり難しかったです。しかし、あなたが参照する重複投稿よりもはるかに制限されているJPQLを考慮して、投稿を開いたままにしておいてください。その特定の場合も同じ原則ではありません。 – Hazaart

答えて

0

Select x.Press, max(x.Batch), max(x.StartTime) 
From x 
Group by x.Press 
+0

これは動作しません。プレス2の場合は、PRESS_2、2054、2017-05-20を返します。したがって、バッチは正しくありません。 – Hazaart

2

あなたはインナーを使用することができますが

をグループ化するため、集約結果と参加します
select * from my_table as t1 
inner join (
select Press, max(start_time) my_time 
from my_table 
group by Press) t2 on t1.Press = T2.Press and t2.my_time = t1.start_time 

または

select * from my_table as t1 
where (t1.Press, t1.start_time) in (
select Press, max(start_time) 
from my_table 
group by Press) 

に参加したり、制限されたORM場合は、レコード生成可能性が回避ギブ

Select x.Press, x.Batch, x.StartTime 
From x 
where (press,starttime) in 
(select press, max(starttime) 
from x group by press) 

ができます - あなたは、各プレスの最大のstart_timeでエントリを選択したいとEA適切なビューは、その後、同様の下に述べたように、あなたが何かを使用するサブクエリ

+0

残念ながら、JPQLでは結合クラスのサブクエリを使用できません – Hazaart

+0

はタプルの使用が許可されています..?とにかく回答がタプル – scaisEdge

+0

で更新されています。タプルはありません:(ネイティブではないため、非常に限定されています)。 – Hazaart

2

を避け、テーブルとしてビュー名を使用します試してみてください、私に知らせてください。