|
@@ -0,0 +1,247 @@
|
|
|
|
|
+TRUNCATE TABLE TB_GOODS_BENEFIT;
|
|
|
|
|
+
|
|
|
|
|
+-- 쿠폰할인상품 생성
|
|
|
|
|
+INSERT INTO TB_GOODS_BENEFIT_TMP (
|
|
|
|
|
+ GOODS_CD
|
|
|
|
|
+ , BENEFIT_GB
|
|
|
|
|
+)
|
|
|
|
|
+SELECT G.GOODS_CD
|
|
|
|
|
+ , '10' AS BENEFIT_GB /*쿠폰할인*/
|
|
|
|
|
+FROM TB_GOODS G
|
|
|
|
|
+ , TB_COUPON CP
|
|
|
|
|
+WHERE CP.SITE_CD = 'G000_10' /*전시사이트*/
|
|
|
|
|
+AND CP.CPN_STAT = 'G232_11' /*쿠폰인 진행중인 쿠폰만*/
|
|
|
|
|
+AND CP.DOWN_ABL_YN = 'Y' /*상품상세 다운로드 가능여부*/
|
|
|
|
|
+AND NOW() <= IF(CP.PD_GB = 'D',DATE_FORMAT(DATE_ADD(NOW(),INTERVAL 1 DAY),'%Y-%m-%d %H:%i:%S'),CP.AVAIL_EDDT)
|
|
|
|
|
+AND NOW() BETWEEN CP.DOWN_STDT AND CP.DOWN_EDDT
|
|
|
|
|
+AND CP.CPN_TYPE IN ('G230_11','G230_20','G230_30') /*상품쿠폰,주문서쿠폰,배송비쿠폰*/
|
|
|
|
|
+AND (SELECT COUNT(1)
|
|
|
|
|
+ FROM TB_COUPON_CUST_GBN
|
|
|
|
|
+ WHERE CPN_ID = CP.CPN_ID
|
|
|
|
|
+ AND USABLE_CUST_GB IN ('G100_10') /*사용가능고객구분:일반*/
|
|
|
|
|
+ ) >= 1
|
|
|
|
|
+AND CP.BUY_LIMIT_AMT <= G.CURR_PRICE /*최소주문금액*/
|
|
|
|
|
+AND CP.DC_PVAL > 0
|
|
|
|
|
+AND IF(CP.TOT_PUB_LIMIT_QTY = 0,9999999999,CP.TOT_PUB_LIMIT_QTY) > (SELECT COUNT(1)
|
|
|
|
|
+ FROM TB_CUST_COUPON
|
|
|
|
|
+ WHERE CPN_ID = CP.CPN_ID
|
|
|
|
|
+ ) /*총발행제한수*/
|
|
|
|
|
+AND (
|
|
|
|
|
+ (CP.APPLY_SCOPE = 'A' )
|
|
|
|
|
+ OR /* 적용대상:상품*/
|
|
|
|
|
+ (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1)
|
|
|
|
|
+ FROM TB_COUPON_REFVAL
|
|
|
|
|
+ WHERE CPN_ID = CP.CPN_ID
|
|
|
|
|
+ AND CPN_TARGET = 'G260_10'
|
|
|
|
|
+ AND DEL_YN = 'N'
|
|
|
|
|
+ AND REF_VAL = G.GOODS_CD
|
|
|
|
|
+ ) > 0
|
|
|
|
|
+ )
|
|
|
|
|
+ OR /* 적용대상:카테고리*/
|
|
|
|
|
+ (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1)
|
|
|
|
|
+ FROM TB_COUPON_REFVAL
|
|
|
|
|
+ WHERE CPN_ID = CP.CPN_ID
|
|
|
|
|
+ AND CPN_TARGET = 'G260_11'
|
|
|
|
|
+ AND DEL_YN = 'N'
|
|
|
|
|
+ AND IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
|
|
|
|
|
+ AND IFNULL(REF_BRAND_CD,G.BRAND_CD) = G.BRAND_CD
|
|
|
|
|
+ AND REF_VAL IN (SELECT DISTINCT
|
|
|
|
|
+ X.CATE_NO
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT LEAF_CATE_NO
|
|
|
|
|
+ , CATE_LVL
|
|
|
|
|
+ , CATE_NO
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT LEAF_CATE_NO
|
|
|
|
|
+ , CASE WHEN X = 1 THEN 'CATE1_NO' /*컬럼과 매핑(컬럼명)*/
|
|
|
|
|
+ WHEN X = 2 THEN 'CATE2_NO'
|
|
|
|
|
+ WHEN X = 3 THEN 'CATE3_NO'
|
|
|
|
|
+ WHEN X = 4 THEN 'CATE4_NO'
|
|
|
|
|
+ ELSE 'CATE5_NO'
|
|
|
|
|
+ END AS CATE_LVL
|
|
|
|
|
+ , CASE WHEN X = 1 THEN CATE1_NO /*컬럼과 매핑(컬럼 데이터)*/
|
|
|
|
|
+ WHEN X = 2 THEN CATE2_NO
|
|
|
|
|
+ WHEN X = 3 THEN CATE3_NO
|
|
|
|
|
+ WHEN X = 4 THEN CATE4_NO
|
|
|
|
|
+ ELSE CATE5_NO
|
|
|
|
|
+ END AS CATE_NO
|
|
|
|
|
+ FROM (SELECT LEAF_CATE_NO
|
|
|
|
|
+ , CATE1_NO
|
|
|
|
|
+ , CATE2_NO
|
|
|
|
|
+ , CATE3_NO
|
|
|
|
|
+ , CATE4_NO
|
|
|
|
|
+ , CATE5_NO
|
|
|
|
|
+ FROM TB_CATE_4SRCH
|
|
|
|
|
+ WHERE SITE_CD = 'G000_10'
|
|
|
|
|
+ AND CATE_TYPE = 'G031_10'
|
|
|
|
|
+ ) A
|
|
|
|
|
+ , (
|
|
|
|
|
+ -- UNPIVOT 컬럼 수 만큼 선언
|
|
|
|
|
+ SELECT 1 AS X
|
|
|
|
|
+ UNION ALL SELECT 2 AS X
|
|
|
|
|
+ UNION ALL SELECT 3 AS X
|
|
|
|
|
+ UNION ALL SELECT 4 AS X
|
|
|
|
|
+ UNION ALL SELECT 5 AS X
|
|
|
|
|
+ ) B
|
|
|
|
|
+ ORDER BY LEAF_CATE_NO, CATE_LVL
|
|
|
|
|
+ ) K
|
|
|
|
|
+ WHERE CATE_NO IS NOT NULL
|
|
|
|
|
+ ) X
|
|
|
|
|
+ , (
|
|
|
|
|
+ SELECT A.CATE_NO
|
|
|
|
|
+ , A.GOODS_CD
|
|
|
|
|
+ FROM TB_CATE_GOODS A
|
|
|
|
|
+ WHERE GOODS_CD = G.GOODS_CD
|
|
|
|
|
+ ) Y
|
|
|
|
|
+ WHERE X.LEAF_CATE_NO = Y.CATE_NO
|
|
|
|
|
+ )
|
|
|
|
|
+ ) >0
|
|
|
|
|
+ )
|
|
|
|
|
+ OR /* 적용대상:브랜드*/
|
|
|
|
|
+ (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1)
|
|
|
|
|
+ FROM TB_COUPON_REFVAL
|
|
|
|
|
+ WHERE CPN_ID = CP.CPN_ID
|
|
|
|
|
+ AND CPN_TARGET = 'G260_12'
|
|
|
|
|
+ AND DEL_YN = 'N'
|
|
|
|
|
+ AND REF_VAL = G.BRAND_CD
|
|
|
|
|
+ AND IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
|
|
|
|
|
+ ) >0
|
|
|
|
|
+ )
|
|
|
|
|
+ OR /* 적용대상:공급업체*/
|
|
|
|
|
+ (CP.APPLY_SCOPE = 'I' AND (SELECT COUNT(1)
|
|
|
|
|
+ FROM TB_COUPON_REFVAL
|
|
|
|
|
+ WHERE CPN_ID = CP.CPN_ID
|
|
|
|
|
+ AND CPN_TARGET = 'G260_13'
|
|
|
|
|
+ AND DEL_YN = 'N'
|
|
|
|
|
+ AND REF_VAL = G.SUPPLY_COMP_CD
|
|
|
|
|
+ ) >0
|
|
|
|
|
+ )
|
|
|
|
|
+ )
|
|
|
|
|
+AND NOT EXISTS (SELECT 1
|
|
|
|
|
+ FROM TB_COUPON_REFVAL SCPR
|
|
|
|
|
+ WHERE SCPR.CPN_ID = CP.CPN_ID
|
|
|
|
|
+ AND SCPR.REF_VAL = G.GOODS_CD
|
|
|
|
|
+ AND SCPR.DEL_YN = 'N' /*삭제안된넘*/
|
|
|
|
|
+ AND SCPR.CPN_TARGET = '40' /* 제외상품*/
|
|
|
|
|
+ )
|
|
|
|
|
+AND NOT EXISTS (SELECT 1
|
|
|
|
|
+ FROM TB_COUPON_BAN_GOODS
|
|
|
|
|
+ WHERE GOODS_CD = G.GOODS_CD
|
|
|
|
|
+ AND DEL_YN = 'N'
|
|
|
|
|
+ )
|
|
|
|
|
+GROUP BY G.GOODS_CD
|
|
|
|
|
+HAVING COUNT(*) > 0
|
|
|
|
|
+;
|
|
|
|
|
+
|
|
|
|
|
+-- 무료배송상품 생성
|
|
|
|
|
+INSERT INTO TB_GOODS_BENEFIT_TMP (
|
|
|
|
|
+ GOODS_CD
|
|
|
|
|
+ , BENEFIT_GB
|
|
|
|
|
+)
|
|
|
|
|
+SELECT GOODS_CD
|
|
|
|
|
+ , '20' AS BENEFIT_GB /*무료배송*/
|
|
|
|
|
+FROM (
|
|
|
|
|
+ SELECT G.GOODS_CD
|
|
|
|
|
+ , DFP.MIN_ORD_AMT
|
|
|
|
|
+ , FN_GET_BENEFIT_PRICE('P',G.GOODS_CD,G.CURR_PRICE,'G100_10') AS CURR_PRICE
|
|
|
|
|
+ FROM TB_GOODS G
|
|
|
|
|
+ , TB_GOODS_STOCK GS
|
|
|
|
|
+ , TB_DELV_FEE_POLICY DFP
|
|
|
|
|
+ WHERE G.GOODS_CD = GS.GOODS_CD
|
|
|
|
|
+ AND G.DELV_FEE_CD = DFP.DELV_FEE_CD
|
|
|
|
|
+ AND G.GOODS_STAT = 'G008_90' /*승인완료상품*/
|
|
|
|
|
+ AND G.SELF_MALL_YN = 'Y' /*몰노출상품*/
|
|
|
|
|
+ AND NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*판매기간*/
|
|
|
|
|
+ AND GS.STOCK_QTY > 0 /*재고있는상품*/
|
|
|
|
|
+ AND DFP.USE_YN = 'Y' /*사용하는배송비정책*/
|
|
|
|
|
+ ) Z
|
|
|
|
|
+WHERE MIN_ORD_AMT <= CURR_PRICE
|
|
|
|
|
+;
|
|
|
|
|
+
|
|
|
|
|
+-- 사은품상품 생성
|
|
|
|
|
+INSERT INTO TB_GOODS_BENEFIT_TMP (
|
|
|
|
|
+ GOODS_CD
|
|
|
|
|
+ , BENEFIT_GB
|
|
|
|
|
+)
|
|
|
|
|
+SELECT GOODS_CD
|
|
|
|
|
+ , '30' AS BENEFIT_GB
|
|
|
|
|
+FROM (
|
|
|
|
|
+ SELECT G.GOODS_CD
|
|
|
|
|
+ FROM TB_FREEGIFT F
|
|
|
|
|
+ INNER JOIN TB_FREEGIFT_SECTION FS
|
|
|
|
|
+ ON F.FREEGIFT_SQ = FS.FREEGIFT_SQ
|
|
|
|
|
+ INNER JOIN TB_FREEGIFT_GOODS FGA
|
|
|
|
|
+ ON F.FREEGIFT_SQ = FGA.FREEGIFT_SQ
|
|
|
|
|
+ AND FGA.GOODS_GB = 'G800_20'
|
|
|
|
|
+ AND FGA.TARGET_GB = 'G260_10'
|
|
|
|
|
+ INNER JOIN TB_GOODS G
|
|
|
|
|
+ ON FGA.TARGET_VAL = G.GOODS_CD
|
|
|
|
|
+ LEFT OUTER JOIN TB_FREEGIFT_GOODS NOT_APPLY
|
|
|
|
|
+ ON F.FREEGIFT_SQ = NOT_APPLY.FREEGIFT_SQ
|
|
|
|
|
+ AND G.GOODS_CD = NOT_APPLY.TARGET_VAL
|
|
|
|
|
+ AND NOT_APPLY.GOODS_GB = 'G800_30'
|
|
|
|
|
+ AND NOT_APPLY.TARGET_GB = 'G260_10'
|
|
|
|
|
+ WHERE NOT_APPLY.TARGET_VAL IS NULL
|
|
|
|
|
+ AND F.DEL_YN = 'N'
|
|
|
|
|
+ AND FS.DEL_YN = 'N'
|
|
|
|
|
+ AND FGA.DEL_YN = 'N'
|
|
|
|
|
+ AND NOW() BETWEEN F.FREEGIFT_STDT AND F.FREEGIFT_EDDT
|
|
|
|
|
+ AND F.SELF_YN = 'Y'
|
|
|
|
|
+ AND F.FREEGIFT_STAT = 'G232_11'
|
|
|
|
|
+ GROUP BY G.GOODS_CD
|
|
|
|
|
+ HAVING COUNT(*) > 0
|
|
|
|
|
+
|
|
|
|
|
+ UNION ALL
|
|
|
|
|
+
|
|
|
|
|
+ SELECT G.GOODS_CD
|
|
|
|
|
+ FROM TB_FREEGIFT F
|
|
|
|
|
+ INNER JOIN TB_FREEGIFT_SECTION FS
|
|
|
|
|
+ ON F.FREEGIFT_SQ = FS.FREEGIFT_SQ
|
|
|
|
|
+ INNER JOIN TB_FREEGIFT_GOODS_APPLY BRAND_FGA
|
|
|
|
|
+ ON F.FREEGIFT_SQ = BRAND_FGA.FREEGIFT_SQ
|
|
|
|
|
+ AND BRAND_FGA.TARGET_GB = 'G260_12' /*브랜드*/
|
|
|
|
|
+ INNER JOIN TB_FREEGIFT_GOODS_APPLY COMPANY_FGA
|
|
|
|
|
+ ON F.FREEGIFT_SQ = COMPANY_FGA.FREEGIFT_SQ
|
|
|
|
|
+ AND COMPANY_FGA.TARGET_GB = 'G260_13' /*업체*/
|
|
|
|
|
+ INNER JOIN TB_GOODS G
|
|
|
|
|
+ ON BRAND_FGA.TARGET_VAL = G.BRAND_CD
|
|
|
|
|
+ AND COMPANY_FGA.TARGET_VAL = G.SUPPLY_COMP_CD
|
|
|
|
|
+ LEFT OUTER JOIN TB_FREEGIFT_GOODS NOT_APPLY
|
|
|
|
|
+ ON F.FREEGIFT_SQ = NOT_APPLY.FREEGIFT_SQ
|
|
|
|
|
+ AND G.GOODS_CD = NOT_APPLY.TARGET_VAL
|
|
|
|
|
+ AND NOT_APPLY.GOODS_GB = 'G800_30'
|
|
|
|
|
+ WHERE NOT_APPLY.TARGET_VAL IS NULL
|
|
|
|
|
+ AND F.DEL_YN = 'N'
|
|
|
|
|
+ AND FS.DEL_YN = 'N'
|
|
|
|
|
+ AND NOW() BETWEEN F.FREEGIFT_STDT AND F.FREEGIFT_EDDT
|
|
|
|
|
+ AND F.SELF_YN = 'Y'
|
|
|
|
|
+ AND F.FREEGIFT_STAT = 'G232_11'
|
|
|
|
|
+ GROUP BY G.GOODS_CD
|
|
|
|
|
+ HAVING COUNT(*) > 0
|
|
|
|
|
+ ) Z
|
|
|
|
|
+GROUP BY GOODS_CD
|
|
|
|
|
+;
|
|
|
|
|
+
|
|
|
|
|
+-- 신상상품 생성
|
|
|
|
|
+INSERT INTO TB_GOODS_BENEFIT_TMP (
|
|
|
|
|
+ GOODS_CD
|
|
|
|
|
+ , BENEFIT_GB
|
|
|
|
|
+)
|
|
|
|
|
+SELECT G.GOODS_CD
|
|
|
|
|
+ , '40' AS BENEFIT_GB /*신상*/
|
|
|
|
|
+FROM TB_GOODS G
|
|
|
|
|
+ , TB_GOODS_STOCK GS
|
|
|
|
|
+WHERE G.GOODS_CD = GS.GOODS_CD
|
|
|
|
|
+AND G.GOODS_STAT = 'G008_90' /*승인완료상품*/
|
|
|
|
|
+AND G.SELF_MALL_YN = 'Y' /*몰노출상품*/
|
|
|
|
|
+AND NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*판매기간*/
|
|
|
|
|
+AND GS.STOCK_QTY > 0 /*재고있는상품*/
|
|
|
|
|
+AND G.FORMAL_GB = 'G009_10' /*정상상품(=신상)*/
|
|
|
|
|
+;
|
|
|
|
|
+
|
|
|
|
|
+TRUNCATE TABLE TB_CATE_FILTER;
|
|
|
|
|
+
|
|
|
|
|
+INSERT INTO TB_CATE_FILTER
|
|
|
|
|
+SELECT *
|
|
|
|
|
+FROM TMP_CATE_FILTER
|
|
|
|
|
+;
|