我正在寻找以 Grails(或只是 Hibernate)标准形式表达以下 SQL 的方式。
select
sum(if( r.type = 'a', r.amount, 0)) as sum_a,
sum(if( r.type = 'b', r.amount, 0)) as sum_b
from records r;
在这里,我想获得由特定列定义的不同行子集的两个总和。目标是将它们放在一个请求中。
好吧,看看一个 Projections 类,我发现它只为一个属性提供了一个基本的总和,所以预期的答案是否定的,但是最好的解决方案是什么?
最佳答案
您应该查看 sqlProjection,它允许您编写一些原生投影。
也许它看起来像这样:
Projections.sqlProjection("sum(if( {alias}.type = 'a', {alias}.amount, 0)) as sum_a", new String[] { "sum_a" }, new Type[] { StandardBasicTypes.INTEGER})
关于hibernate - Grails 标准的复杂预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37949785/