DEL_FLAG, PK_COUNTRY, CREATION_TIME, MODIFIED_TIME, PK_ID, PK_ASSESS, PK_MEMBER, PK_ORDER, CHANGE_TYPE, TRADE_TIME, CREATOR, MODIFIED merge into cu_member_assess_detail a using (select ca.pk_id,ca.pk_member,(case when ca.assess_type=0 then 1 else 3 end) change_type, ca.assess_target trade_achieve,ca.pk_creator,ca.pk_country from ${tableName} ca where ca.assess_status=2 and ca.period = #{period} and pk_member in #{item.pkMember} and assess_type = #{assessType} and ca.assess_target <= ca.month_balance+ca.month_add) b on (a.pk_assess = b.pk_id and a.pk_member = b.pk_member and a.change_type=b.change_type) when not matched then insert (pk_assess,pk_member,change_type,trade_achieve, pk_creator,pk_country) values(b.pk_id,b.pk_member,b.change_type,b.trade_achieve, b.pk_creator,b.pk_country) insert into cu_member_assess_detail (pk_assess,pk_member,PK_ORDER,change_type,trade_achieve,TRADE_TIME, pk_creator,pk_country) select nvl(ca.pk_id,0) PK_ASSESS,so.PK_MEMBER,so.pk_id pk_order, 0 CHANGE_TYPE,order_achieve TRADE_ACHIEVE, pay_time TRADE_TIME,so.PK_MEMBER,so.pk_country from sa_order so left join (select * from ${tableName} where period = #{period} and ASSESS_TYPE=0) ca on so.pk_member = ca.pk_member where so.del_flag=0 and so.order_status=1 and order_type in(3,12,14,22,26,31) and so.order_achieve >0 and pay_time >=#{startDate, jdbcType=DATE} and pay_time < #{endDate, jdbcType=DATE} union select nvl(ca.pk_id,0) PK_ASSESS,so.PK_MEMBER,so.pk_id pk_order, 2 CHANGE_TYPE,order_ass_achieve TRADE_ACHIEVE, pay_time TRADE_TIME,so.PK_MEMBER,so.pk_country from sa_order so left join (select * from ${tableName} where period = #{period} and ASSESS_TYPE=1) ca on so.pk_member = ca.pk_member where so.del_flag=0 and so.order_status=1 and order_type =13 and pay_time >=#{startDate, jdbcType=DATE} and pay_time < #{endDate, jdbcType=DATE} merge into cu_member_assess_detail a using (select pk_id,pk_member,(case when assess_type=0 then 1 else 3 end)change_type, assess_target trade_achieve,pk_creator,pk_country from ${tableName} where assess_status=2 and period = #{period} and assess_target <= month_balance+month_add) b on (a.pk_assess = b.pk_id and a.pk_member = b.pk_member and a.change_type=b.change_type) when matched then update set a.trade_achieve = b.trade_achieve when not matched then insert (pk_assess,pk_member,change_type,trade_achieve, pk_creator,pk_country) values(b.pk_id,b.pk_member,b.change_type,b.trade_achieve, b.pk_creator,b.pk_country) merge into cu_member_assess_detail a using( select #{item.changeType} change_type,#{item.pkMember} pk_member,#{item.pkAssess} pk_assess from dual )b on (a.pk_assess=b.pk_assess and a.pk_member=b.pk_member and a.change_type=b.change_type) when matched then update set a.del_flag=1 DELETE FROM cu_member_assess_detail WHERE pk_assess IN ( SELECT pk_id FROM ${tableName} WHERE period= #{period})