sql >> データベース >  >> RDS >> Mysql

QueryDSLでのケースビルダー式の合計

    基本クラスの式では、集計を適用できません。お気づきの方もいらっしゃると思いますが、elsewhere句は実際にはNumberExpressionを返します。あなたがする必要があるのは、式の代わりにそのタイプを使用することです。したがって、コードは次のようになります。

    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. ORA-12557 TNS:プロトコル・アダプタをロードできません

    2. 古いバージョンのMySQL(<5.5.0)でTO_SECONDS()をエミュレートする

    3. Webアプリケーションの実行時にjdbc:oracle:thin:@localhost:1521:XEに適したドライバーが見つかりません

    4. 変数名phpmysqlでテーブルを作成する