在JPQL中选择带有group by和max的行

Ano*_*ose 3 sql jpql

我有以下结构。不是在一张表中,而是为了保持简单:

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
Run Code Online (Sandbox Code Playgroud)

我想获得每台印刷机的最后一个计划批次。结果应该是:

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
Run Code Online (Sandbox Code Playgroud)

但是,当我按按分组并且还想选择批次时。我有义务将批次放入“分组依据”条款中。

Select x.Press, x.Batch, max(x.StartTime)
From myTable x
Group by x.Press
Run Code Online (Sandbox Code Playgroud)

如何使用 JPQL 实现这一点?

pra*_*arg 5

由于您想选择每次按下最大 start_time 的条目,您还可以使用下面提到的内容 -

Select x.Press, x.Batch, x.StartTime
From x 
where (press,starttime) in 
(select press, max(starttime) 
from x group by press)
Run Code Online (Sandbox Code Playgroud)

让我们试一试,请告诉我。