集合函数中的hql条件表达式

时间:2010-11-12 12:32:44

标签: nhibernate hql aggregate-functions

HQL是否支持聚合函数中的条件表达式?

我想做这样的事情

select
  o.id, 
  count(o),
  count(o.something is null and o.otherthing = :other)
from objects o

但是我从Antlr解析器中得到了一个MissingTokenException。

编辑:通过使用子查询,它正在运行,但它很难看,因为我正在按几个变量进行分组......

1 个答案:

答案 0 :(得分:2)

您可以在HQL中使用表达式。对于此实例,您将要使用SUM而不是COUNT,如下所示:

select
  o.id, 
  count(o),
  sum(case when o.something is null and o.otherthing = :other then 1 else 0 end)
from objects o

当条件匹配时,SUM将为该行接收1。当它们不匹配时,它将收到零。这应该提供与COUNT相同的功能。