|
|
@@ -504,6 +504,168 @@
|
|
|
|
|
|
<!-- 상품 혜택가 목록 -->
|
|
|
<sql id="getGoodsBenefitList_sql">
|
|
|
+ WITH CTE AS (
|
|
|
+ SELECT CPN_REFVAL_SQ
|
|
|
+ FROM TB_COUPON CP
|
|
|
+ INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_ID=CPR.CPN_ID
|
|
|
+ WHERE CP.SITE_CD = 'G000_10'
|
|
|
+ AND CP.CPN_STAT = 'G232_11' -- 쿠폰인 진행중인 쿠폰만
|
|
|
+ AND NOW() BETWEEN CP.AVAIL_STDT AND CP.AVAIL_EDDT
|
|
|
+ AND CP.CPN_TYPE = 'G230_10' /*즉시할인쿠폰*/
|
|
|
+ AND CP.DC_CD_GB = 'G233_00' -- 일반유형(할인쿠폰구분)
|
|
|
+ AND CP.APPLY_SCOPE = 'I'
|
|
|
+ AND CPR.DEL_YN = 'N'
|
|
|
+ )
|
|
|
+ , CTE_DETAIL AS (
|
|
|
+ SELECT CP.CPN_REFVAL_SQ, CPR.CPN_ID, CPR.REF_VAL, G.GOODS_CD GKEY, G.GOODS_CD
|
|
|
+ FROM CTE CP
|
|
|
+ INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_REFVAL_SQ=CPR.CPN_REFVAL_SQ
|
|
|
+ INNER JOIN TB_GOODS G ON CPR.REF_VAL=G.GOODS_CD
|
|
|
+ WHERE CPR.CPN_TARGET = 'G260_10'
|
|
|
+
|
|
|
+ UNION
|
|
|
+
|
|
|
+ /* 적용대상:카테고리*/
|
|
|
+ SELECT CP.CPN_REFVAL_SQ, CPR.CPN_ID, CPR.REF_VAL, G.GOODS_CD GKEY, G.GOODS_CD
|
|
|
+ FROM CTE CP
|
|
|
+ INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_REFVAL_SQ=CPR.CPN_REFVAL_SQ
|
|
|
+ INNER JOIN
|
|
|
+ (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 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 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, -- 상품타입
|
|
|
+ (SELECT 1 AS X -- UNPIVOT 컬럼 수 만큼 선언
|
|
|
+ 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 ON CPR.REF_VAL=X.CATE_NO
|
|
|
+ INNER JOIN TB_CATE_GOODS Y ON X.LEAF_CATE_NO = Y.CATE_NO
|
|
|
+ INNER JOIN TB_GOODS G ON G.GOODS_CD=Y.GOODS_CD
|
|
|
+ WHERE CPR.CPN_TARGET = 'G260_11'
|
|
|
+ AND IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
|
|
|
+ AND IFNULL(REF_BRAND_CD,G.BRAND_CD) = G.BRAND_CD
|
|
|
+
|
|
|
+ UNION
|
|
|
+
|
|
|
+ /* 적용대상:브랜드*/
|
|
|
+ SELECT CP.CPN_REFVAL_SQ, CPR.CPN_ID, CPR.REF_VAL, G.BRAND_CD GKEY, G.GOODS_CD
|
|
|
+ FROM CTE CP
|
|
|
+ INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_REFVAL_SQ=CPR.CPN_REFVAL_SQ
|
|
|
+ INNER JOIN TB_GOODS G ON CPR.REF_VAL=G.BRAND_CD
|
|
|
+ WHERE CPR.CPN_TARGET = 'G260_12'
|
|
|
+ AND IFNULL(REF_FORMAL_GB,G.FORMAL_GB) = G.FORMAL_GB
|
|
|
+
|
|
|
+ UNION
|
|
|
+
|
|
|
+ /* 적용대상:공급업체*/
|
|
|
+ SELECT CP.CPN_REFVAL_SQ, CPR.CPN_ID, CPR.REF_VAL, G.SUPPLY_COMP_CD GKEY, G.GOODS_CD
|
|
|
+ FROM CTE CP
|
|
|
+ INNER JOIN TB_COUPON_REFVAL CPR ON CP.CPN_REFVAL_SQ=CPR.CPN_REFVAL_SQ
|
|
|
+ INNER JOIN TB_GOODS G ON CPR.REF_VAL=G.SUPPLY_COMP_CD
|
|
|
+ WHERE CPR.CPN_TARGET = 'G260_13'
|
|
|
+ )
|
|
|
+ SELECT GOODS_CD
|
|
|
+ , 'G100_00' AS CUST_GB
|
|
|
+ , CURR_PRICE
|
|
|
+ , MIN(
|
|
|
+ ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(CURR_PRICE - DC_PVAL ,0)
|
|
|
+ ELSE CURR_PRICE - (FLOOR((CURR_PRICE * DC_PVAL / 100) / 1) * 1)
|
|
|
+ END) ) AS PC_CURR_PRICE
|
|
|
+ , MIN(
|
|
|
+ ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(CURR_PRICE - DC_MVAL ,0)
|
|
|
+ ELSE CURR_PRICE - (FLOOR((CURR_PRICE * DC_MVAL / 100) / 1) * 1)
|
|
|
+ END) )AS MO_CURR_PRICE
|
|
|
+ , MIN(
|
|
|
+ ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(CURR_PRICE - DC_AVAL ,0)
|
|
|
+ ELSE CURR_PRICE - (FLOOR((CURR_PRICE * DC_AVAL / 100) / 1) * 1)
|
|
|
+ END) )AS MO_CURR_PRICE
|
|
|
+ , STAFF_CURR_PRICE
|
|
|
+ , MIN(
|
|
|
+ ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(STAFF_CURR_PRICE - DC_PVAL ,0)
|
|
|
+ ELSE CURR_PRICE - (FLOOR((STAFF_CURR_PRICE * DC_PVAL / 100) / 1) * 1)
|
|
|
+ END) )AS STAFF_PC_CURR_PRICE
|
|
|
+ , MIN(
|
|
|
+ ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(STAFF_CURR_PRICE - DC_MVAL ,0)
|
|
|
+ ELSE CURR_PRICE - (FLOOR((STAFF_CURR_PRICE * DC_MVAL / 100) / 1) * 1)
|
|
|
+ END) )AS STAFF_MO_CURR_PRICE
|
|
|
+ , MIN(
|
|
|
+ ( CASE WHEN DC_WAY = 'G240_10' THEN GREATEST(STAFF_CURR_PRICE - DC_AVAL ,0)
|
|
|
+ ELSE CURR_PRICE - (FLOOR((STAFF_CURR_PRICE * DC_AVAL / 100) / 1) * 1)
|
|
|
+ END) )AS STAFF_APP_CURR_PRICE
|
|
|
+ FROM (
|
|
|
+ SELECT CP.CPN_ID
|
|
|
+ , CP.CPN_NM
|
|
|
+ , CP.DC_WAY /*할인방식*/
|
|
|
+ , CP.DC_PVAL /*PC 할인값*/
|
|
|
+ , CP.DC_MVAL /*MO 할인값*/
|
|
|
+ , CP.DC_AVAL /*APP 할인값*/
|
|
|
+ , CP.CURR_PRICE /*전체 판매가*/
|
|
|
+ , CP.STAFF_CURR_PRICE /*임직원판매가*/
|
|
|
+ , CP.GOODS_CD
|
|
|
+ FROM (
|
|
|
+ SELECT CP.CPN_ID /*쿠폰ID*/
|
|
|
+ , CP.CPN_NM /*쿠폰명*/
|
|
|
+ , CP.DC_WAY /*할인방식*/
|
|
|
+ , CP.DC_PVAL /*PC할인값*/
|
|
|
+ , CP.DC_MVAL /*모바일할인값*/
|
|
|
+ , CP.DC_AVAL /*APP할인값*/
|
|
|
+ , G.CURR_PRICE /*현재판매가*/
|
|
|
+ , G.CURR_PRICE AS STAFF_CURR_PRICE /*현재판매가*/
|
|
|
+ , G.GOODS_CD
|
|
|
+ FROM CTE_DETAIL CC
|
|
|
+ INNER JOIN TB_GOODS G ON CC.GOODS_CD = G.GOODS_CD
|
|
|
+ INNER JOIN TB_COUPON CP ON CC.CPN_ID = CP.CPN_ID
|
|
|
+ WHERE
|
|
|
+ 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'
|
|
|
+ )
|
|
|
+ ) CP
|
|
|
+ ) Y
|
|
|
+ GROUP BY GOODS_CD ,CURR_PRICE, STAFF_CURR_PRICE, CUST_GB
|
|
|
+ </sql>
|
|
|
+
|
|
|
+ <!-- 상품 혜택가 목록 -->
|
|
|
+ <sql id="getGoodsBenefitList_sql_org">
|
|
|
SELECT GOODS_CD
|
|
|
, 'G100_00' AS CUST_GB
|
|
|
, CURR_PRICE
|