Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Suma wyrażenia konstruktora przypadku w QueryDSL

Klasa bazowa Expression nie pozwala na stosowanie agregacji. Jeśli zauważysz, twoja klauzula inaczej faktycznie zwraca NumberExpression. Wszystko, co musisz zrobić, to użyć tego typu zamiast wyrażenia. Więc Twój kod może stać się:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Odpowiednik kolumny MSSQL IDENTITY w MySQL

  2. Kompozyt MySQL unikalny w FK

  3. wykonaj procedurę składowaną w skrypcie aplikacji google

  4. Błąd JDBC:przed rozpoczęciem zestawu wyników

  5. Używanie ActiveRecord do osiągania złożonych relacji w Rails