Hibernate,如何计算条件

时间:2011-03-14 06:56:18

标签: hibernate hql

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

  

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

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

提前谢谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

结合Nathanphan的回答和M. A. Khomeni的评论,

  CASE

不支持

COUNT()

因此,我们需要使用SUM()代替COUNT()

例如:

COUNT(CASE WHEN st.averageMark < su.gradePass THEN 1 ELSE 0 END)

应该写成

SUM(CASE WHEN st.averageMark < su.gradePass THEN 1 ELSE 0 END)