【发布时间】:2018-11-27 12:43:17
【问题描述】:
我尝试获取状态等于 ACCEPTED 的 AdmissionForms 的计数,但未能通过此查询进行。
在存储库中,
SELECT COUNT(IF(status='ACCEPTED',1,NULL)), COUNT(IF(status='PENDING',1,NULL)) FROM admissionforms;
我得到的例外,
org.hibernate.hql.internal.ast.QuerySyntaxException: expecting CLOSE, found '(' near line 1, column 16 [SELECT COUNT(if(status = 'ACCEPTED',1,NULL)) FROM admissionforms]
【问题讨论】:
-
(标准)SQL 中没有
IF(),我很确定HQL 中也没有if。AS 'ACCEPTED'也是无效的标准 SQL。标识符不能用单引号括起来。 -
你需要在休眠中使用
CASE:CASE WHEN status = 'ACCEPTED' THEN 1 ELSE NULL END。但我只会选择COUNT(*)其中status = 'ACCEPTED' -
@BackSlash 问题已更新..我发布了单个答案..但是如果需要多个状态值的多个答案怎么办。
-
@a_horse_with_no_name 问题已更新
-
您想要 SQL 还是 HQL 解决方案?在 SQL 中,它就像
select status, count(*) from admissionforms where status in ('..', ...) group by status一样简单