我的SQL查询是
SELECT cust.*, sum(ord.status="Pending") as pendingOrderCount, sum(ord.status="Completed") as completedOrderCount
FROM customer cust
LEFT JOIN item_order ord ON ord.customer_id = cust.id
WHERE cust.tenant_id = 1
GROUP BY cust.id
此查询适用于MySql工作台
因此,从本质上讲,我希望获得客户的所有属性,然后再添加两个别名,已完成订单的数量是来自该客户的订单数量,其中order.status是“完成”的,以及每个客户的待定订单数量
在我的Spring Boot JPA存储库类中,我尝试使用JPQL重新创建这个查询。这是我的尝试:
@Query("select cust, sum(ord.status = 'Completed') as completedOrders, sum(ord.status = 'Pending') as pendingOrders from item_order ord LEFT JOIN ord.customer where customer id = 1)
我知道这是不正确的,我的集成开发环境在ord.status = 'Completed‘和ord.status = 'Pending’处显示语法错误
在等号处。我一直在查看JPQL文档,但没有找到任何获取具有给定值的属性总和的示例,因此在这方面可能需要一些帮助
发布于 2021-02-22 10:20:34
我发现了如何根据属性在JPQL中的状态有条件地计算属性的数量
sum(case when ord.status = 'Completed' then 1 else 0 end) as completedOrders, sum(case when ord.status = 'Pending' then 1 else 0 end) as pendingOrders
https://stackoverflow.com/questions/66284827
复制相似问题