首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将SQL查询转换为JPQL查询-具有特定文本值的属性总数

将SQL查询转换为JPQL查询-具有特定文本值的属性总数
EN

Stack Overflow用户
提问于 2021-02-19 20:50:39
回答 1查看 33关注 0票数 0

我的SQL查询是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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重新创建这个查询。这是我的尝试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@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文档,但没有找到任何获取具有给定值的属性总和的示例,因此在这方面可能需要一些帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-22 10:20:34

我发现了如何根据属性在JPQL中的状态有条件地计算属性的数量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66284827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文