sql >> Base de Datos >  >> RDS >> Mysql

Suma de la expresión del generador de casos en QueryDSL

La clase base Expression no le permite aplicar agregaciones. Si nota, su cláusula de lo contrario en realidad devuelve NumberExpression. Todo lo que necesita hacer es usar ese tipo en lugar de Expresión. Entonces su código podría convertirse en:

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());