INSERT INTO GC_GRADE_CHANGE_LOG ( GRAD_CHNG_LOG_INNB , CHNG_YM , MBR_INNB , MBR_DV_CD , SOPMAL_CD , MBR_GRAD_INNB , MBR_GRAD_ORDR , NEW_MBR_GRAD_INNB , NEW_GRAD_ORDR , CHNG_GRAD_DV , CALC_PD_MT_CNT , GRAD_MDAT_CYCLE_MT_CNT , USE_AT , REGUSR , REGIST_DT) SELECT CAST(@ROWNUM := @ROWNUM + 1 AS UNSIGNED) AS GRAD_CHNG_LOG_INNB , DATE_FORMAT(CURDATE(), '%Y%m') , CG.MBR_INNB , CG.MBR_DV_CD , CG.SOPMAL_CD , CG.MBR_GRAD_INNB , CG.OLD_GRAD_ORDR , CG.NEW_MBR_GRAD_INNB , CG.NEW_GRAD_ORDR , CASE WHEN CG.OLD_GRAD_ORDR CG.NEW_GRAD_ORDR THEN 'UP' WHEN CG.OLD_GRAD_ORDR ]]> CG.NEW_GRAD_ORDR THEN 'DN' ELSE 'EQ' END CHNG_GRAD_DV , CG.CALC_PD_MT_CNT , CG.GRAD_MDAT_CYCLE_MT_CNT , 'Y' , 0 , SYSDATE() FROM (SELECT GM2.MBR_INNB , GM2.MBR_DV_CD , GM2.MBR_ID , GM2.MBR_NM , GM2.SOPMAL_CD , GM2.MBR_GRAD_INNB , (SELECT MBR_GRAD_ORDR FROM GC_MEMBER_GRAD MG WHERE MG.MBR_GRAD_INNB = GM2.MBR_GRAD_INNB) OLD_GRAD_ORDR , FN_GET_MEMBER_GRAD_NAME(GM2.SOPMAL_CD, GM2.MBR_DV_CD, GM2.MBR_INNB) MBR_GRAD_NM , GM2.CALC_PD_MT_CNT , GM2.GRAD_MDAT_CYCLE_MT_CNT , GM2.CALC_BGN_DT , GM2.CALC_END_DT , IFNULL(ORDR.RL_SETLE_AMT, 0) RL_SETLE_AMT , IFNULL(ORDR.REFUND_AMT, 0) REFUND_AMT , (SELECT MAX(MBR_GRAD_INNB) FROM GC_MEMBER_GRAD GMG WHERE GMG.SOPMAL_CD = GM2.SOPMAL_CD AND GMG.MBR_GRAD_AMT IFNULL(ORDR.RL_SETLE_AMT, 0) - IFNULL(ORDR.REFUND_AMT, 0)) NEW_MBR_GRAD_INNB , (SELECT MBR_GRAD_ORDR FROM GC_MEMBER_GRAD MG2 WHERE MG2.MBR_GRAD_INNB = (SELECT MAX(MBR_GRAD_INNB) FROM GC_MEMBER_GRAD GMG2 WHERE GMG2.SOPMAL_CD = GM2.SOPMAL_CD AND GMG2.MBR_GRAD_AMT IFNULL(ORDR.RL_SETLE_AMT, 0) - IFNULL(ORDR.REFUND_AMT, 0))) NEW_GRAD_ORDR FROM (SELECT GM.MBR_INNB , GM.MBR_DV_CD , GM.MBR_ID , GM.MBR_NM , GMGM.SOPMAL_CD , GMGM.MBR_GRAD_INNB , FN_GET_MEMBER_GRAD_NAME(GMGM.SOPMAL_CD, GM.MBR_DV_CD, GM.MBR_INNB) MBR_GRAD_NM , MGG.CALC_PD_MT_CNT , MGG.GRAD_MDAT_CYCLE_MT_CNT , MGG.CALC_BGN_DT , MGG.CALC_END_DT FROM GC_MEMBER GM INNER JOIN GC_MEMBER_GRAD_MAPPING GMGM ON GM.MBR_INNB = GMGM.MBR_INNB AND GM.MBR_DV_CD = GMGM.MBR_DV_CD AND GM.MBR_TY_CD = '01' INNER JOIN (SELECT GMGG.SOPMAL_CD , DATE_FORMAT(NOW(), '%Y-01-01') STD_DT , GMGG.CALC_PD_MT_CNT -- 산정기간월수 , GMGG.GRAD_MDAT_CYCLE_MT_CNT -- 등급조정주기 , DATE_FORMAT(DATE_SUB(NOW(), INTERVAL CALC_PD_MT_CNT MONTH), '%Y-%m-01 00:00:00') CALC_BGN_DT , DATE_FORMAT(LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 MONTH)), '%Y-%m-%d 23:59:59') CALC_END_DT FROM GC_MEMBER_GRAD_GROUP GMGG WHERE GMGG.USE_AT = 'Y' AND GMGG.GRAD_MDAT_AT = 'Y') MGG ON GMGM.SOPMAL_CD = MGG.SOPMAL_CD) GM2 LEFT JOIN LATERAL ( SELECT GO2.MBR_INNB, GO2.MBR_DV_CD, GO2.SOPMAL_CD, SUM(GO2.RL_SETLE_AMT) RL_SETLE_AMT, IFNULL(SUM(RE.REFUND_AMT), 0) REFUND_AMT FROM GC_ORDER GO2 LEFT JOIN (SELECT GOR.ORDR_INNB, GOR.SOPMAL_CD, SUM(IFNULL(GOR.REFUND_AMT, 0)) REFUND_AMT FROM GC_ORDER_REFUND GOR WHERE 1 = 1 AND GOR.REFUND_PROCS_STTUS_CD = '03' AND GOR.USE_AT = 'Y' -- AND GOR.REFUND_REQST_DT BETWEEN GM.CALC_BGN_DT AND GM.CALC_END_DT GROUP BY GOR.ORDR_INNB, GOR.SOPMAL_CD) RE ON GO2.ORDR_INNB = RE.ORDR_INNB AND GO2.SOPMAL_CD = RE.SOPMAL_CD WHERE GO2.USE_AT = 'Y' AND GO2.MBR_INNB > 0 AND GO2.ORDR_STTUS_CD = '75' AND GO2.SOPMAL_CD = GM2.SOPMAL_CD and GO2.MBR_INNB = GM2.MBR_INNB AND GO2.ORDR_RCEPT_DT BETWEEN GM2.CALC_BGN_DT AND GM2.CALC_END_DT GROUP BY GO2.MBR_INNB, GO2.MBR_DV_CD, GO2.SOPMAL_CD ) ORDR ON GM2.MBR_INNB = ORDR.MBR_INNB AND GM2.MBR_DV_CD = ORDR.MBR_DV_CD AND GM2.SOPMAL_CD = ORDR.SOPMAL_CD WHERE 1 = 1 #AND GM2.MBR_INNB IN (6, 11) -- AND GM.MBR_TY_CD = '01' -- AND GO2.SLE_ENVRN_CD = 판매환경 관계없이 다 포함(TM,POS 등 모두:금이사님~) GROUP BY GM2.MBR_INNB , GM2.MBR_DV_CD , GM2.MBR_ID , GM2.MBR_NM , GM2.SOPMAL_CD , GM2.MBR_GRAD_INNB , GM2.CALC_PD_MT_CNT , GM2.GRAD_MDAT_CYCLE_MT_CNT , GM2.CALC_BGN_DT , GM2.CALC_END_DT) CG WHERE (@ROWNUM := (SELECT IFNULL(MAX(D.GRAD_CHNG_LOG_INNB), 0) FROM GC_GRADE_CHANGE_LOG D)) >= 0 AND MBR_GRAD_INNB ]]> NEW_MBR_GRAD_INNB UPDATE GC_MEMBER_GRAD_MAPPING as GGM, (SELECT CG.MBR_INNB, CG.MBR_DV_CD, CG.SOPMAL_CD, CG.MBR_GRAD_INNB, CG.NEW_MBR_GRAD_INNB FROM ( SELECT GM2.MBR_INNB , GM2.MBR_DV_CD , GM2.MBR_ID , GM2.MBR_NM , GM2.SOPMAL_CD , GM2.MBR_GRAD_INNB , (SELECT MBR_GRAD_ORDR FROM GC_MEMBER_GRAD MG WHERE MG.MBR_GRAD_INNB = GM2.MBR_GRAD_INNB) OLD_GRAD_ORDR , FN_GET_MEMBER_GRAD_NAME(GM2.SOPMAL_CD,GM2.MBR_DV_CD,GM2.MBR_INNB)MBR_GRAD_NM , GM2.CALC_PD_MT_CNT , GM2.GRAD_MDAT_CYCLE_MT_CNT , GM2.CALC_BGN_DT , GM2.CALC_END_DT , IFNULL(ORDR.RL_SETLE_AMT,0) RL_SETLE_AMT , IFNULL(ORDR.REFUND_AMT,0) REFUND_AMT , (SELECT MAX(MBR_GRAD_INNB) FROM GC_MEMBER_GRAD GMG WHERE GMG.SOPMAL_CD = GM2.SOPMAL_CD AND GMG.MBR_GRAD_AMT IFNULL(ORDR.RL_SETLE_AMT,0) - IFNULL(ORDR.REFUND_AMT,0) ) NEW_MBR_GRAD_INNB , (SELECT MBR_GRAD_ORDR FROM GC_MEMBER_GRAD MG2 WHERE MG2.MBR_GRAD_INNB = (SELECT MAX(MBR_GRAD_INNB) FROM GC_MEMBER_GRAD GMG2 WHERE GMG2.SOPMAL_CD = GM2.SOPMAL_CD AND GMG2.MBR_GRAD_AMT IFNULL(ORDR.RL_SETLE_AMT,0) - IFNULL(ORDR.REFUND_AMT,0) ) ) NEW_GRAD_ORDR FROM ( SELECT GM.MBR_INNB , GM.MBR_DV_CD , GM.MBR_ID , GM.MBR_NM , GMGM.SOPMAL_CD , GMGM.MBR_GRAD_INNB , FN_GET_MEMBER_GRAD_NAME(GMGM.SOPMAL_CD,GM.MBR_DV_CD,GM.MBR_INNB)MBR_GRAD_NM , MGG.CALC_PD_MT_CNT , MGG.GRAD_MDAT_CYCLE_MT_CNT , MGG.CALC_BGN_DT , MGG.CALC_END_DT FROM GC_MEMBER GM INNER JOIN GC_MEMBER_GRAD_MAPPING GMGM ON GM.MBR_INNB = GMGM.MBR_INNB AND GM.MBR_DV_CD = GMGM.MBR_DV_CD AND GM.MBR_TY_CD = '01' INNER JOIN (SELECT GMGG.SOPMAL_CD , DATE_FORMAT(NOW(),'%Y-01-01') STD_DT , GMGG.CALC_PD_MT_CNT -- 산정기간월수 , GMGG.GRAD_MDAT_CYCLE_MT_CNT -- 등급조정주기 , DATE_FORMAT(DATE_SUB(NOW(), INTERVAL CALC_PD_MT_CNT MONTH), '%Y-%m-01 00:00:00') CALC_BGN_DT , DATE_FORMAT(LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 MONTH)), '%Y-%m-%d 23:59:59') CALC_END_DT FROM GC_MEMBER_GRAD_GROUP GMGG WHERE GMGG.USE_AT ='Y' AND GMGG.GRAD_MDAT_AT = 'Y' ) MGG ON GMGM.SOPMAL_CD = MGG.SOPMAL_CD ) GM2 LEFT JOIN LATERAL ( SELECT GO2.MBR_INNB, GO2.MBR_DV_CD, GO2.SOPMAL_CD, SUM(GO2.RL_SETLE_AMT) RL_SETLE_AMT, IFNULL(SUM(RE.REFUND_AMT),0) REFUND_AMT FROM GC_ORDER GO2 LEFT JOIN ( SELECT GOR.ORDR_INNB, GOR.SOPMAL_CD, SUM(IFNULL(GOR.REFUND_AMT,0)) REFUND_AMT FROM GC_ORDER_REFUND GOR WHERE 1 = 1 AND GOR.REFUND_PROCS_STTUS_CD = '03' AND GOR.USE_AT ='Y' -- AND GOR.REFUND_REQST_DT BETWEEN GM.CALC_BGN_DT AND GM.CALC_END_DT GROUP BY GOR.ORDR_INNB, GOR.SOPMAL_CD ) RE ON GO2.ORDR_INNB = RE.ORDR_INNB AND GO2.SOPMAL_CD = RE.SOPMAL_CD WHERE GO2.USE_AT = 'Y' AND GO2.MBR_INNB ]]> 0 AND GO2.ORDR_STTUS_CD = '75' AND GO2.SOPMAL_CD = GM2.SOPMAL_CD and GO2.MBR_INNB = GM2.MBR_INNB AND GO2.ORDR_RCEPT_DT BETWEEN GM2.CALC_BGN_DT AND GM2.CALC_END_DT GROUP BY GO2.MBR_INNB, GO2.MBR_DV_CD, GO2.SOPMAL_CD ) ORDR ON GM2.MBR_INNB = ORDR.MBR_INNB AND GM2.MBR_DV_CD = ORDR.MBR_DV_CD AND GM2.SOPMAL_CD = ORDR.SOPMAL_CD WHERE 1 = 1 #AND GM2.MBR_INNB IN (6, 11) -- AND GM.MBR_TY_CD = '01' -- AND GO2.SLE_ENVRN_CD = 판매환경 관계없이 다 포함(TM,POS 등 모두:금이사님~) GROUP BY GM2.MBR_INNB , GM2.MBR_DV_CD , GM2.MBR_ID , GM2.MBR_NM , GM2.SOPMAL_CD , GM2.MBR_GRAD_INNB , GM2.CALC_PD_MT_CNT , GM2.GRAD_MDAT_CYCLE_MT_CNT , GM2.CALC_BGN_DT , GM2.CALC_END_DT ) CG WHERE 1 =1 AND MBR_GRAD_INNB ]]> NEW_MBR_GRAD_INNB) S SET GGM.MBR_GRAD_INNB = S.NEW_MBR_GRAD_INNB , GGM.GRAD_MDAT_DT = NOW() , GGM.REGUSR = 0 , GGM.REGIST_DT = SYSDATE() WHERE 1 = 1 AND GGM.MBR_INNB = S.MBR_INNB AND GGM.MBR_DV_CD = S.MBR_DV_CD AND GGM.SOPMAL_CD = S.SOPMAL_CD UPDATE GC_GRADE_CHANGE_LOG GCL SET USE_AT = 'N' WHERE 1 = 1 AND GCL.CHNG_YM = DATE_FORMAT(CURDATE(), '%Y%m') AND GCL.USE_AT = 'Y'