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と、 }
設定され、最終的な結果は次のとおりです。