我有一个类似
的表格| customer | profile | status | date |
| 1 | 1 | DONE | mmddyy |
| 1 | 1 | DONE | mmddyy |
在这种情况下,我想按具有最大日期的配置文件ID进行分组。配置文件可以重复。我已经排除了Java 8流,因为这里有很多条件。
我想将以下SQL转换为JPQL:
select customer, profile, status, max(date)
from tbl
group by profile, customer,status, date, column-k
having count(profile)>0 and status='DONE';
有人可以告诉我如何在JPQL中编写此查询,如果它在SQL中正确吗?如果我在select
中声明列,则也需要按group by,并且查询结果也不同。
答案 0 :(得分:1)
我猜想您想要完成最新的客户/个人资料组合。
如果是,则正确的SQL是:
select t.*
from t
where t.date = (select max(t2.date)
from t t2
where t2.customer = t.customer and t2.profile = t.profile
) and
t.status = 'DONE';
我不知道如何将其转换为JPQL,但是您最好还是从可以使用的SQL代码开始。
答案 1 :(得分:0)
在您的查询date column
中group by
不需要的status='DONE'
中应添加where clause
select customer, profile, status, max(date)
from tbl
where status='DONE'
group by profile, customer,status,
having count(profile)>0