sql >> Database >  >> RDS >> Mysql

Som van Case Builder-expressie in QueryDSL

Met de basisklasse Expressie kunt u geen aggregaties toepassen. Als je het merkt, retourneert je anders-clausule eigenlijk NumberExpression. Het enige dat u hoeft te doen, is dat type gebruiken in plaats van Expression. Dus je code zou kunnen worden:

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. Standaardwaarde instellen van een integerkolom SQLite

  2. Hoe verwijder ik cascade op MySQL MyISAM storage engine?

  3. Microsoft Access-memogegevenstype naar MySQL-gegevenstype

  4. Hoe selecteer ik rij op primaire sleutel, een rij 'boven' en een rij 'onder' op een andere kolom?