Hibernate, как считать с условием - PullRequest
3 голосов
/ 14 марта 2011

Я использую oracle и hibernate для отображения. Я хочу считать с условием в функции count (). мой код:

select count (случай, когда st.averageMark

код мне ничего не возвращает. Я использовал сумму вместо подсчета, она вернула результат, но это неверно, результат больше, чем я предполагаю.

спасибо заранее.

Ответы [ 2 ]

13 голосов
/ 14 марта 2011

Я только что решил проблему с помощью следующего кода.

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 голос
/ 10 мая 2017

Объединение Натанфана и ответа М.А. Хомени ,

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...