nhibernate - 聚合函数中的 hql 条件表达式

标签 nhibernate hql aggregate-functions

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

我想做这样的事情

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

但是我从 Antlr 解析器收到 MissingTokenException。

编辑:通过使用子查询,它可以工作,但它很丑陋,因为我按多个变量进行分组...

最佳答案

您可以在 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 相同的功能。

关于nhibernate - 聚合函数中的 hql 条件表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4164629/

相关文章:

SQL - 按别名上的 Max() 排序

Nhibernate 映射 - 生成 "native"表示必须手动分配 ID

nhibernate - 如何在nhibernate中做子查询?

java - HQL 查询未删除托管对象

c# - 在 nhibernate 中 Linq-ing 计算属性无法解析属性错误

elasticsearch - Elasticsearch中对应的SQL聚合查询

c# - Fluent NHibernate SqlDateTime 溢出异常

c# - Fluent NHibernate ISession Manager 或等效的

java - 由 : java. sql.SQLException 引起:子查询在 emailAccess 相同的所有行上返回多于 1 行

mysql - mysql 5.6 是否有 ANY_VALUE 功能?