Hibernate,如何计算条件

Nat*_*han 3 hibernate hql

我正在使用oracle和hibernate进行映射.我想用count()函数中的条件计数.我的代码是:

选择计数(st.averageMark <su.gradePass然后1其他0结束时的情况)来自Study st join st.subject su,其中st.acaYear在(2009)和st.semester = 4,su.idSeq = 1330 group by st. acaYear

代码没有回报我.我使用sum而不是count它返回了一个结果,但它是错误的,结果比我想象的要大.

预先感谢.

Nat*_*han 13

我刚刚用以下代码解决了这个问题.

select sum(case when st.averageMark >= su.gradePass then 1 else 0 end) as pass,
       sum(case when  st.averageMark < su.gradePass then 1 else 0 end) as fail
from Study st join st.subject su
where st.acaYear in (2009) and st.semester = 4 and su.idSeq = 1330
group by st.acaYear
Run Code Online (Sandbox Code Playgroud)


Emd*_*won 6

结合 Nathanphan的回答和MA Khomeni的评论,

CASE 不支持 COUNT()

所以我们需要使用SUM()代替COUNT()

例如:

COUNT(CASE WHEN st.averageMark < su.gradePass THEN 1 ELSE 0 END)
Run Code Online (Sandbox Code Playgroud)

应该写成

SUM(CASE WHEN st.averageMark < su.gradePass THEN 1 ELSE 0 END)
Run Code Online (Sandbox Code Playgroud)