如何使用一个条件查询对多列进行求和?

时间:2013-01-16 10:17:10

标签: mysql grails criteria

例如,假设一个表“values”包含4列A,B,C和D.现在,我想添加B,C,D,其中A = 10.

对于单列,它是这样的:

def c=values.createCriteria{
eq("A",10)
projections{
sum("B")
}
}

如何在A = 10的情况下添加B,C和D?

3 个答案:

答案 0 :(得分:1)

尝试这样的事情

def c=values.createCriteria().get{
eq("A",10)
 projections{
  sum("B","b")
  sum("C","c")
  sum("D","d")
 }
 resultTransformer(AliasToEntityMapResultTransformer.INSTANCE)
}

然后你可以构建一个地图或列表[sumB:c.b,sumbC:c.c,sumD:c.d] 像那样的东西

def bcd=c.b+c.c+c.d

得到你的最终价值并抱歉如果这还不是你想要的,但这就是我从你的解释中得到的

答案 1 :(得分:0)

你可以这样做:
    SELECT B,C,D,(B+C+D) AS sum FROM values WHERE A=10;
SELECT (B+C+D) AS sum FROM values WHERE A=10;

认为这会有所帮助。

答案 2 :(得分:0)

你可以在控制器中这样写:

def sumList = Values.executeQuery("SELECT (B+C+D) AS sum FROM Values WHERE A=10") println(sumList)

参考链接:http://grails.asia/grails-hql-count-examples