merge into CU_MEMBER_MONTH_ACHIEVE a
using (
select pk_member, #{period} period, RECOMMEND_MONEY, RECOMMEND_ACHIEVE, REPURCHASE_MONEY, REPURCHASE_ACHIEVE, pk_country
from (
select pk_member,
pk_country,
sum(REGISTER_NEW_AMOUNT + UPGRADE_NEW_AMOUNT) RECOMMEND_MONEY,
sum(REGISTER_NEW_PV + UPGRADE_NEW_PV) RECOMMEND_ACHIEVE,
sum(REPURCHASE_NEW_AMOUNT + HI_FUN_NEW_AMOUNT + MALL_NEW_AMOUNT) REPURCHASE_MONEY,
sum(REPURCHASE_PV + HI_FUN_NEW_PV + MALL_NEW_PV) REPURCHASE_ACHIEVE
from ${tableName}
where REGISTER_NEW_AMOUNT + UPGRADE_NEW_AMOUNT > 0
or REPURCHASE_NEW_AMOUNT + HI_FUN_NEW_AMOUNT + MALL_NEW_AMOUNT > 0
group by pk_member, pk_country)
) b
on (a.pk_member = b.pk_member and a.period = b.period)
when matched then
update set a.RECOMMEND_MONEY = b.RECOMMEND_MONEY, a.RECOMMEND_ACHIEVE = b.RECOMMEND_ACHIEVE,
a.REPURCHASE_MONEY = b.REPURCHASE_MONEY,a.REPURCHASE_ACHIEVE = b.REPURCHASE_ACHIEVE
WHEN NOT MATCHED THEN
insert (PK_ID, PK_MEMBER, PERIOD, SETTLE_MONTH, RECOMMEND_MONEY, RECOMMEND_ACHIEVE, REPURCHASE_MONEY,
REPURCHASE_ACHIEVE, PK_COUNTRY, PK_CREATOR)
values (CU_MEMBER_MONTH_ACHIEVE_SEQ.NEXTVAL,
b.pk_member, b.period, #{month}, b.RECOMMEND_MONEY, b.RECOMMEND_ACHIEVE, b.REPURCHASE_MONEY,
b.REPURCHASE_ACHIEVE, b.PK_COUNTRY, 1)