FROM GC_MEMBER GM
LEFT JOIN GC_EXTRL_MEMBER EM /* 타 매장회원 포함 */
INNER JOIN GC_EXTRL_MEMBER EM /* 자기 매장만 */
ON GM.MBR_INNB = EM.MBR_INNB
AND GM.MBR_DV_CD = EM.MBR_DV_CD
AND EM.EXTRL_INTRLCK_DV_CD = '03'
INNER JOIN GC_MEMBER_SITE GMS
ON GM.MBR_INNB = GMS.MBR_INNB
AND GM.MBR_DV_CD = GMS.MBR_DV_CD
AND GMS.SOPMAL_CD = #{sopmalCd}
INNER JOIN GC_MEMBER_GRAD_MAPPING GMGM
ON GMS.MBR_INNB = GMGM.MBR_INNB
AND GMS.MBR_DV_CD = GMGM.MBR_DV_CD
AND GMS.SOPMAL_CD = GMGM.SOPMAL_CD
/* 특정 등급 */
AND GMGM.MBR_GRAD_INNB = #{srchGrad}
LEFT JOIN GC_MARKETING_AGREE GMA -- 마케팅 수신여부 동의 체크 안할때는 JOIN 안함
ON GMS.MBR_INNB = GMA.MBR_INNB
AND GMS.MBR_DV_CD = GMA.MBR_DV_CD
AND GMS.SOPMAL_CD = GMA.SOPMAL_CD -- SOPMALL 기준 검색
AND GMA.MARKT_RECPTN_AGRE_AT = #{srchMarktRecptnAgreAt} -- 마케팅 수신여부 동의 체크 할때는 필수
LEFT JOIN LATERAL ( SELECT FMI.MBR_INNB , FMI.MBR_DV_CD ,
SUM( FMI.BLCE ) - SUM( IFNULL(FMI.LOSS,0) ) AS MILEAGE
FROM GC_MILEAGE FMI
WHERE 1 = 1
AND FMI.MBR_INNB = GM.MBR_INNB
AND FMI.MBR_DV_CD = GM.MBR_DV_CD
AND FMI.BLCE > 0
AND FMI.USE_POSBL_END_DT >= DATE_FORMAT(CURDATE(), '%Y-%m-%d')
AND FMI.MLG_ACCML_DV_CD IN ('add', 'up')
AND FMI.CANCL_AT = 'N'
) GMI
ON GM.MBR_INNB = GMI.MBR_INNB
AND GM.MBR_DV_CD = GMI.MBR_DV_CD
LEFT JOIN LATERAL ( SELECT O.MBR_INNB, O.MBR_DV_CD
, SUM(O.RL_SETLE_AMT) - SUM(IFNULL(GOR.REFUND_AMT, 0)) AS RL_SETLE_AMT
, COUNT(O.ORDR_INNB) ORDR_CNT
FROM GC_ORDER O
LEFT JOIN LATERAL(SELECT GOR2.ORDR_INNB, GOR2.SOPMAL_CD, SUM(GOR2.REFUND_AMT) REFUND_AMT
FROM GC_ORDER_REFUND GOR2
WHERE 1 = 1
AND GOR2.USE_AT = 'Y'
AND GOR2.REFUND_PROCS_STTUS_CD IN ('02','03') -- 추가됨...01 신청단계는 계산안해야함
AND O.ORDR_INNB = GOR2.ORDR_INNB
AND O.SOPMAL_CD = GOR2.SOPMAL_CD
GROUP BY GOR2.ORDR_INNB, GOR2.SOPMAL_CD
) GOR
ON O.ORDR_INNB = GOR.ORDR_INNB
AND O.SOPMAL_CD = GOR.SOPMAL_CD
WHERE 1 = 1
AND (O.ORDR_INNB, O.SOPMAL_CD) IN ( SELECT DISTINCT GOI.ORDR_INNB, GOI.SOPMAL_CD
FROM GC_ORDER_ITEM GOI
INNER JOIN GC_ORDER O1
ON GOI.ORDR_INNB = O1.ORDR_INNB
AND GOI.SOPMAL_CD = O1.SOPMAL_CD
WHERE 1 = 1
AND GOI.GOODS_KND_CD = '01'
AND GOI.GOODS_NM LIKE CONCAT('%',IFNULL(#{stdrGoodsNm},''),'%')
AND O1.SOPMAL_CD = O.SOPMAL_CD
AND O1.MBR_INNB = O.MBR_INNB
AND O1.MBR_DV_CD = O.MBR_DV_CD
)
AND O.SOPMAL_CD = #{sopmalCd}
AND O.USE_AT = 'Y'
AND O.ORDR_STTUS_CD BETWEEN '25' AND '75'
AND O.ORDR_RCEPT_DT =]]> IFNULL(#{stdrStrtPurchsPd}, '1999-01-01')
AND O.ORDR_RCEPT_DT IFNULL(DATE_ADD(#{stdrEndPurchsPd},INTERVAL 1 DAY), SYSDATE())
AND O.MBR_INNB = GM.MBR_INNB
AND O.MBR_DV_CD = GM.MBR_DV_CD
GROUP BY O.MBR_INNB, O.MBR_DV_CD
) GO2
ON GM.MBR_INNB = GO2.MBR_INNB
AND GM.MBR_DV_CD = GO2.MBR_DV_CD
LEFT JOIN LATERAL ( SELECT O.MBR_INNB, O.MBR_DV_CD
, SUM(O.RL_SETLE_AMT) - SUM(IFNULL(GOR.REFUND_AMT, 0)) AS RL_SETLE_AMT
, COUNT(O.ORDR_INNB) ORDR_CNT
FROM GC_ORDER O
LEFT JOIN LATERAL(SELECT GOR2.ORDR_INNB, GOR2.SOPMAL_CD, SUM(GOR2.REFUND_AMT) REFUND_AMT
FROM GC_ORDER_REFUND GOR2
WHERE 1 = 1
AND GOR2.USE_AT = 'Y'
AND GOR2.REFUND_PROCS_STTUS_CD IN ('02','03') -- 추가됨...01 신청단계는 계산안해야함
AND O.ORDR_INNB = GOR2.ORDR_INNB
AND O.SOPMAL_CD = GOR2.SOPMAL_CD
GROUP BY GOR2.ORDR_INNB, GOR2.SOPMAL_CD
) GOR
ON O.ORDR_INNB = GOR.ORDR_INNB
AND O.SOPMAL_CD = GOR.SOPMAL_CD
WHERE 1 = 1
AND (O.ORDR_INNB, O.SOPMAL_CD) IN ( SELECT DISTINCT GOI.ORDR_INNB, GOI.SOPMAL_CD
FROM GC_ORDER_ITEM GOI
INNER JOIN GC_ORDER O1
ON GOI.ORDR_INNB = O1.ORDR_INNB
AND GOI.SOPMAL_CD = O1.SOPMAL_CD
WHERE 1 = 1
AND GOI.GOODS_KND_CD = '01'
AND GOI.GOODS_NM LIKE CONCAT('%',IFNULL(#{cmprGoodsNm},''),'%')
AND O1.SOPMAL_CD = O.SOPMAL_CD
AND O1.MBR_INNB = O.MBR_INNB
AND O1.MBR_DV_CD = O.MBR_DV_CD
)
AND O.SOPMAL_CD = #{sopmalCd}
AND O.USE_AT = 'Y'
AND O.ORDR_STTUS_CD BETWEEN '25' AND '75'
AND O.ORDR_RCEPT_DT =]]> IFNULL(#{cmprStrtPurchsPd}, '1999-01-01')
AND O.ORDR_RCEPT_DT IFNULL(DATE_ADD(#{cmprEndPurchsPd},INTERVAL 1 DAY), SYSDATE())
AND O.MBR_INNB = GM.MBR_INNB
AND O.MBR_DV_CD = GM.MBR_DV_CD
GROUP BY O.MBR_INNB, O.MBR_DV_CD
) GO3
ON GM.MBR_INNB = GO3.MBR_INNB
AND GM.MBR_DV_CD = GO3.MBR_DV_CD
WHERE 1 = 1
AND GM.USE_AT = 'Y'
AND GM.MBR_DV_CD = 'GC'
AND GM.MBR_NM = #{srchKeyword}
AND GM.MBR_ID = #{srchKeyword}
AND GM.EMAIL = (SELECT HEX(AES_ENCRYPT(#{srchKeyword} , #{secretKey})))
AND GM.MBTLNB = (SELECT HEX(AES_ENCRYPT(REPLACE(#{srchKeyword},'-',''), #{secretKey})))
AND EM.EXTRL_INTRLCK_DV_CD = '03' /* POS 회원이고(타매장 회원 체크 아닐때 필수) */
AND EM.STR_INNB = #{strInnb} /* 내매장이고 (타매장 회원 체크 아닐때 필수) */
AND GM.REGIST_DT =]]> IFNULL(#{srchStrtRegistDt}, '1999-01-01') /* 가입일 시작 */
AND GM.REGIST_DT IFNULL(DATE_ADD(#{srchEndRegistDt},INTERVAL 1 DAY), SYSDATE()) /* 가입일 종료 */
AND GMS.LAST_PURCHS_DT =]]> IFNULL(#{srchStrtLastPurchsDt}, '1999-01-01') /* 최종구매일 시작 */
AND GMS.LAST_PURCHS_DT IFNULL(DATE_ADD(#{srchEndLastPurchsDt},INTERVAL 1 DAY), SYSDATE()) /* 최종구매일 종료 */
AND IFNULL(GO2.RL_SETLE_AMT,0) =]]> IFNULL(#{stdrStrtPurchsAmt}, 0) /* 기준 구매금액 시작 */
AND IFNULL(GO2.RL_SETLE_AMT,0) IFNULL(#{stdrEndPurchsAmt}, 9999999999) /* 기준 구매금액 종료 */
AND IFNULL(GO2.ORDR_CNT,0) =]]> IFNULL(#{stdrStrtPurchsCnt}, 0) /* 기준 구매횟수 시작 */
AND IFNULL(GO2.ORDR_CNT,0) IFNULL(#{stdrEndPurchsCnt}, 9999999) /* 기준 구매횟수 종료 */
AND IFNULL(GO3.RL_SETLE_AMT,0) =]]> IFNULL(#{cmprStrtPurchsAmt}, 0) /* 비교 구매금액 시작 */
AND IFNULL(GO3.RL_SETLE_AMT,0) IFNULL(#{cmprEndPurchsAmt}, 9999999999) /* 비교 구매금액 종료 */
AND IFNULL(GO3.ORDR_CNT,0) =]]> IFNULL(#{cmprStrtPurchsAmt}, 0) /* 비교 구매횟수 시작 */
AND IFNULL(GO3.ORDR_CNT,0) IFNULL(#{cmprEndPurchsAmt}, 9999999) /* 비교 구매횟수 종료 */
/* 성별 */
AND GM.SEX = #{srchSex}
/* 생년 시작 */
AND GM.BRTH_DE =]]> DATE_FORMAT(CONCAT(IFNULL(#{srchStrtBrthYear}, '1999'),'0101'),'%Y0101')
/* 생년 종료 */
AND GM.BRTH_DE DATE_FORMAT(CONCAT(IFNULL(#{srchEndBrthYear}, '9999'),'1231'),'%Y1231')
/* 출생 월 시작*/
AND SUBSTRING(GM.BRTH_DE,5,2) =]]> #{srchStrtBrthMonth}
/* 출생 윌 종료 */
AND SUBSTRING(GM.BRTH_DE,5,2) #{srchEndBrthMonth}
/* 마일리지 시작 */
AND GMI.MILEAGE =]]> #{srchStrtMlg}
/* 마일리지 종료 */
AND GMI.MILEAGE #{srchEndMlg}
/* 마케팅 수신여부 동의 */
AND GMA.MARKT_RECPTN_AGRE_AT = #{srchMarktRecptnAgreAt}
AND CNSLT.CNSLT_CN LIKE CONCAT('%', #{srchCnsltCn}, '%')
= #{srchStartDate} ' 00:00:00'
]]>
#{srchProcsSttusCd}
INSERT INTO GC_STORE_COUNSEL
(STR_CNSLT_DTLS_INNB,
STR_INNB,
MNGR_INNB,
MBR_INNB,
MBR_DV_CD,
CNSLT_CN,
PROCS_STTUS,
PROCS_DE_CTY,
REGUSR,
REGUSRNM,
REGIST_DT,
UPDUSR,
UPDT_DT)
VALUES (
#{strCnsltDtlsInnb},
#{strInnb},
#{mngrInnb},
#{mbrInnb},
#{mbrDvCd},
#{cnsltCn},
#{procsSttus},
NOW()
#{regusr},
#{regusrnm},
NOW(),
#{updusr},
NOW());
/* 처리여부, 내용*/
UPDATE GC_STORE_COUNSEL
SET
CNSLT_CN = #{cnsltCn},
PROCS_STTUS = #{procsSttus},
UPDUSR = #{updusr},
UPDT_DT = NOW()
WHERE STR_CNSLT_DTLS_INNB = #{strCnsltDtlsInnb}
DELETE
FROM GC_STORE_COUNSEL
WHERE STR_CNSLT_DTLS_INNB = #{strCnsltDtlsInnb}