merge into cu_member a
using (
select pk_member, max(new_level) pk_awards
from cu_member_awards
where period = #{period} and award_type = #{awardType}
and del_flag = 0
group by pk_member
) b
on (a.pk_id = b.pk_member)
when matched then
update set
a.pk_awards = b.pk_awards,
a.pk_range_awards = b.pk_awards,
a.modified_time = sysdate
merge into cu_member a
using (select pk_member, max(old_level) pk_awards
from cu_member_awards ca
inner join cu_member cm
on ca.pk_member = cm.pk_id
where ca.period = #{period}
and ca.up_type = 1
and ca.del_flag = 0
and cm.pk_awards < ca.new_level
group by ca.pk_member) b
on (a.pk_id = b.pk_member)
when matched then
update set
a.pk_awards = b.pk_awards,
a.modified_time = sysdate
merge into cu_member a
using (
select y.pk_member, y.pk_awards
from cu_member x
inner join (
select a.pk_member, a.new_level pk_awards
from cu_member_awards a
inner join (
select pk_member, max(pk_id) pk_id
from cu_member_awards
where del_flag = 0
and up_type = 2
and end_validity_date <= #{settleDate, jdbcType=DATE}
group by pk_member) b
on a.pk_id = b.pk_id
where a.del_flag = 0
) y
on x.pk_id = y.pk_member
where x.pk_awards < y.pk_awards
) b
on (a.pk_id = b.pk_member)
when matched then
update set
a.pk_awards = b.pk_awards,
a.modified_time = sysdate
merge into cu_member a
using (
select pk_member, max(pk_awards) pk_awards from (
select
#{item.pkMember} pk_member,
#{item.newLevel} pk_awards,
#{item.awardType} award_type
from dual
)
where award_type = #{awardType}
group by pk_member
) b
on (a.pk_id = b.pk_member)
when matched then
update set
a.pk_awards = b.pk_awards,
a.pk_range_awards = b.pk_awards,
a.modified_time = sysdate