sql >> Databasteknik >  >> RDS >> Mysql

Summan av Case Builder-uttryck i QueryDSL

Basklassen Expression tillåter inte att du tillämpar aggregationer. Om du märker det, returnerar din annars klausul faktiskt NumberExpression. Allt du behöver göra är att använda den typen istället för Expression. Så din kod kan bli:

NumberExpression<Integer> sourceCases = qTable.source.
        when(matchedValue1).then(new Integer(1)).
        otherwise(new Integer(0));

NumberExpression<Integer> newAccountCases = qTable.isNew.
        when(matchedValue2).then(new Integer(1)).
        otherwise(new Integer(0));

return queryDslJdbcTemplate.queryForObject(sqlQuery,
        new Mapping(qTable.filed1,
                    qTable.filed2,
                    qTable.id.count(),
                    sourceCases.sum(),
                    newAccountCases.sum());



  1. AngularJS &Laravel 4.2 hämtar data från flera tabeller och sammanfogar dem

  2. Varning:mysql_error():det angivna argumentet är inte en giltig MySQL-Link-resurs

  3. mysql databas backup med mysqldump

  4. Jämför två olika multidimensionella arrayer och markera ändringarna