MYSQL組合は、すべての蓄積されたのと同じ値を再利用するために組み合わせます

SELECT pe.person_type AS personType型、' 0 '  AS plaitAmount、' 0 '  AS ID、COUNT(pe.id)AS strengthAmount
 FROM t_personのPE
 pe.deleted = 0 AND pe.department_id = 5 グループBY pe.person_typeの
 UNION ALL SELECT bz.person_type AS personType型、bz.plait_amount AS bz.id plaitAmount、AS番号、0 AS strengthAmount
 
     
  
 FROM t_preparation_rybzsbz BZ
 WHERE bz.deleted =  0 
    AND bz.department_id =  5

次のようにクエリ結果は以下のとおりです。

アルゴリズムは、Java、同じ組み合わせPersonTypeでを使用して、以下のように、各フィールドの結果を蓄積します。

    / ** 
     * @author wangbin 
     * @date 2019年7月25日夜05時39分
     * @description:将查询的结果按照personType型合并
     * @バージョン1.0 
    * / 
    プライベートリスト<PreparationRybzsbzVO> buildPersonType(一覧<PreparationRybzsbzVO> preparationRybzsbzList){ 
        地図 <整数、PreparationRybzsbzVO>タイプマップ= 新しい HashMapの<> ();
        (PreparationRybzsbzVO項目:preparationRybzsbzList){
             場合(typeMap.containsKey(item.getPersonType())){ 
                PreparationRybzsbzVO P = typeMap.get(item.getPersonType())。
                p.setPlaitAmount(p.getPlaitAmount()+ item.getPlaitAmount())。
                p.setStrengthAmount(p.getStrengthAmount() + item.getStrengthAmount())。
                p.setId(p.getId() + item.getId())。
                typeMap.put(item.getPersonType()、P); 
            } { 
                typeMap.put(item.getPersonType()、項目); 
            } 
        } 
        リスト <PreparationRybzsbzVO> preparationRybzsbzVOList = 新規のArrayList <> ();
        (のMap.Entry <整数、PreparationRybzsbzVO> エントリ:typeMap.entrySet()){ 
            preparationRybzsbzVOList.add(entry.getValue())。 
        } 
        を返すpreparationRybzsbzVOListと、
    }

設定され、最終的な結果は次のとおりです。

 

おすすめ

転載: www.cnblogs.com/it-way/p/11246150.html