Mysql
 sql >> база данни >  >> RDS >> Mysql

Сума на израза на Case Builder в QueryDSL

Базовият клас Expression не ви позволява да прилагате агрегации. Ако забележите, вашата иначе клауза всъщност връща NumberExpression. Всичко, което трябва да направите, е да използвате този тип вместо Expression. Така вашият код може да стане:

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. Импортиране на компресирани файлове в Mysql с помощта на CMD

  2. Неанглийски знаци се появяват като въпросителни на моята php страница - изглеждат добре в базата данни

  3. Защо java.sql.DriverManager.getConnection(...) виси?

  4. LAST_INSERT_ID() как работи в среда с много потребители

  5. Обединете таблици със стойности на запетая