DEL_FLAG, PK_CREATOR, CREATION_TIME, PK_MODIFIED, MODIFIED_TIME, PK_COUNTRY, PK_ID, PK_MEMBER, PERIOD, UP_TYPE, OLD_LEVEL, NEW_LEVEL, REMARK insert ALL into cu_member_awards(pk_member,period,up_type,old_level,new_level,purchase_status,pk_creator,pk_country) values ( #{item.pkMember},#{item.period},#{item.upType},#{item.oldLevel},#{item.newLevel},#{item.purchaseStatus},#{item.pkCreator}, #{item.pkCountry} ) SELECT 1 FROM dual merge into cu_member_settle_awards a using( select #{period} period,b.* from( select pk_member,pk_country,a_balance,b_balance,a_new_pv,b_new_pv, (case when a_balance=0 and b_balance=0 then a_new_pv+b_new_pv when a_balance=0 then a_new_pv else b_new_pv end) new_pv from ( select ct.pk_member,ct.pk_country,nvl(ctb.a_balance,0) a_balance,nvl(ctb.b_balance,0) b_balance, ct.a_sum_pv a_new_pv,ct.b_sum_pv b_new_pv from ( select pk_member,pk_country,sum(A_NEW_PV+REP_A_NEW_PV) A_SUM_PV,sum(b_NEW_PV+REP_B_NEW_PV) b_SUM_PV, sum(register_new_pv) REGISTER_PV,sum(upgrade_new_pv) UPGRADE_PV,sum(repurchase_new_pv) REPURCHASE_PV, sum(hi_fun_new_pv) HI_FUN_PV,sum(mall_new_pv) MALL_PV from cu_member_achieve${month} where period <= #{period} and pk_country=1 group by pk_member,pk_country ) ct left join ${beforeMontTableName} ctb on ct.pk_member = ctb.pk_member )) b where new_pv>=#{minAchieve}) b on (a.pk_member=b.pk_member and a.period=b.period) when matched then update set a.a_balance=b.a_balance,a.b_balance=b.b_balance, a.a_new_pv=b.a_new_pv,a.b_new_pv=b.b_new_pv,a.new_pv=b.new_pv when not matched then insert(pk_id,period,pk_member,a_balance,b_balance,a_new_pv,b_new_pv,new_pv,pk_country,assess_status) values(cu_member_settle_awards_seq.nextval,b.period,b.pk_member,b.a_balance,b.b_balance,b.a_new_pv,b.b_new_pv,b.new_pv,b.pk_country,3) merge into cu_member_settle_awards a using( select pk_member,period,max(pk_awards) pk_awards from( select pk_member,period,#{item.pkId} pk_awards from cu_member_settle_awards where period = #{period} and pk_country=#{item.pkCountry} and new_pv>=#{item.communityCheck} and new_pv <#{item.communityCheckEnd} ) group by pk_member,period ) b on (a.pk_member=b.pk_member and a.period=b.period) when matched then update set a.pk_awards=b.pk_awards update cu_member_awards set del_flag = 1, modified_time = sysdate, PK_MODIFIED = 1 where period= #{period} and pk_member in #{item.pkMember} merge into cu_member_settle_awards a using( select ca.pk_member,ca.period,ce.assess_target,ce.assess_status from cu_member_settle_awards ca inner join ${assessTableName} ce on ca.pk_member=ce.pk_member where ca.period=#{awardPeriod} and ce.period=#{assessPeriod} ) b on (a.pk_member=b.pk_member and a.period=b.period) when matched then update set a.assess_target=b.assess_target,a.assess_status=b.assess_status merge into cu_member_settle_awards a using( select #{period} period,b.pk_member,b.max_team_pv,b.small_team_pv new_pv from( select pk_parent pk_member,max(team_month_pv+new_pv) max_team_pv, (sum(team_month_pv+new_pv)-max(team_month_pv+new_pv)) small_team_pv, count(pk_parent) dept_num from ${rangeTableName} group by pk_parent having count(pk_parent)>=2) b where b.small_team_pv>=#{minAchieve}) b on (a.pk_member=b.pk_member and a.period=b.period) when matched then update set a.a_new_pv=b.max_team_pv,a.b_new_pv=b.new_pv,a.new_pv=b.new_pv when not matched then insert(pk_id,period,pk_member,a_balance,b_balance,a_new_pv,b_new_pv,new_pv,pk_country,assess_status) values(cu_member_settle_awards_seq.nextval,b.period,b.pk_member,0,0,b.max_team_pv,b.new_pv,b.new_pv,1,3) delete from cu_member_awards where period = #{period} and up_type = 1 delete from cu_member_settle_awards where period = #{period} delete from cu_member_settle_awards where pk_id in( select a.pk_id from ( select ct.pk_id,ct.pk_member,ba.awards_value from cu_member_settle_awards ct inner join bd_awards ba on ct.pk_awards=ba.pk_id and ba.del_flag=0 where period= #{period}) a inner join( select ct.*,bw.awards_value from( select pk_member,max(pk_awards) pk_awards from cu_member_settle_awards where period between #{firstPeriod} and #{yesPeriod} group by pk_member) ct inner join bd_awards bw on ct.pk_awards=bw.pk_id and bw.del_flag=0 ) b on a.pk_member=b.pk_member and a.awards_value <=b.awards_value)