我正在寻找一种在 NHibernate 中模拟以下查询的方法......
select total = count(*) from (
select userId, reportId
from RunHistory
where runDate >= @d
group by userId, reportId
) t
我需要获取用户的唯一报告运行总数以及用于分页查询的报告。问题是 HQL 不允许在 from 子句中使用子查询,我认为 Criteria/QueryOver 也不可能。一种可能的解决方案是将两列配对并执行count(distinct pair_report_user_ids)
,但这似乎是一种 hack。您能想出另一种方法来获取总数,而无需获取整个子查询结果并计算返回的行数吗?
我想我找到了一种方法count(*) over()
,在多列聚合查询中添加一个并且只选择第一行!
select top 1 userId, reportId, total = count(*) over()
from RunHistory
where runDate >= @d
group by userId, reportId