merge into ${rangeTableName} a using ( select a.pk_member, max(a.new_level) pk_grade from cu_member_grade a inner join( select pk_member, max(nvl(modified_time, creation_time)) creation_time from cu_member_grade where period = #{period} and del_flag = 0 and up_type = 2 group by pk_member) b on a.pk_member = b.pk_member and nvl(a.modified_time, a.creation_time) = b.creation_time group by a.pk_member ) b on (a.pk_member = b.pk_member) when matched then update set a.pk_grade = b.pk_grade merge into ${secondRangeTableName} a using ( select cs.pk_member, b.pk_grade from ${secondRangeTableName} cs inner join( select a.pk_member, max(a.new_level) pk_grade from cu_member_grade a inner join( select pk_member, max(nvl(modified_time, creation_time)) creation_time from cu_member_grade where period <= #{period} and del_flag = 0 and up_type = 2 group by pk_member) b on a.pk_member = b.pk_member and nvl(a.modified_time, a.creation_time) = b.creation_time group by a.pk_member) b on cs.pk_member = b.pk_member where cs.pk_grade < b.pk_grade ) b on (a.pk_member = b.pk_member) when matched then update set a.pk_grade = b.pk_grade merge into ${rangeTableName} a using ( select pk_member, max(new_level) pk_grade from cu_member_level where del_flag = 0 and up_type = 4 and pk_order = #{pkOrder} group by pk_member ) b on (a.pk_member = b.pk_member) when matched then update set a.pk_grade = b.pk_grade update cu_member_grade set del_flag = 1, modified_time = sysdate where period = #{period} and del_flag = 0 and up_type = 1 update cu_member_grade set del_flag = 1, modified_time = sysdate where period = #{period} and del_flag = 0 and up_type = 1 and pk_id in #{item.pkId}