HQL:计算集合中的空值

时间:2012-06-08 15:03:06

标签: mysql sql hibernate hql

我需要一个查询来计算某些实体(学生)的集合(Student.absences)中的空值(Absence.excuse)。

到目前为止,我设法创建了这个查询:

SELECT s, SUM(CASE WHEN a.excuse IS NULL THEN 1 ELSE 0 END)
    FROM Student AS s 
LEFT JOIN s.absences a 
WHERE s.class = :class 
GROUP BY s
ORDER BY s.ordinal

有效,但仅限于学生在缺勤表中已经缺席(有或没有借口)。如果学生完全没有缺席,则返回1。但我不知道这怎么可能。如果没有缺席,它会将a.excuse评估为NULL吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

尝试

SELECT s, SUM(CASE WHEN (a.excuse IS NULL and a.id IS NOT NULL) THEN 1 ELSE 0 END)