Browse Source

Merge branch 'master' of http://112.172.147.34:4936/style24/style24.doc

swkim 5 years ago
parent
commit
d933c06841

BIN
산출물/3.설계/01.화면설계서/05.SCM/쿠폰관리_SCM_기능정의.jpg


+ 52 - 14
산출물/3.설계/05.DB-Object/06.DDL/table.sql

@@ -8887,24 +8887,27 @@ ALTER TABLE TB_GOODS_PRICE_RES
   AUTO_INCREMENT = 1;
 
 ################################################################################
-#상품혜택내용
+#상품혜택
 ################################################################################
 DROP TABLE IF EXISTS TB_GOODS_BENEFIT RESTRICT;
 CREATE TABLE TB_GOODS_BENEFIT (
-  GOODS_CD             VARCHAR(20)  NOT NULL COMMENT '상품코드', -- 상품코드
-  CPN_YN               CHAR(1)      NOT NULL DEFAULT 'N' COMMENT '상품쿠폰존재여부', -- 상품쿠폰존재여부
-  FREEGIFT_YN          CHAR(1)      NOT NULL DEFAULT 'N' COMMENT '사은품존재여부', -- 사은품존재여부
-  REG_DT               TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '등록일시', -- 등록일시
-  UPD_DT               TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '수정일시' -- 수정일시
-)
-COMMENT '상품혜택내용. 배치로 인한 온라인 혜택내용 등록에 의한 발생';
--- 상품 혜택내용
-ALTER TABLE TB_GOODS_BENEFIT
-  ADD CONSTRAINT PK_GOODS_BENEFIT
-    PRIMARY KEY (
-      GOODS_CD
-    );
+  GOODS_CD     VARCHAR(20)  NOT NULL COMMENT '상품코드(상품)',
+  BENEFIT_GB   VARCHAR(20)  NOT NULL COMMENT '혜택구분(10:쿠폰할인, 20:무료배송, 30:사은품, 40:신상)',
+  REG_NO       INT UNSIGNED NOT NULL COMMENT '등록자번호',
+  REG_DT       TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '등록일시',
+  PRIMARY KEY (GOODS_CD, BENEFIT_GB)
+)
+COMMENT '상품혜택. 상품의 혜택 집계에 의한 발생';
 
+################################################################################
+#상품혜택임시
+################################################################################
+DROP TABLE IF EXISTS TB_GOODS_BENEFIT_TMP RESTRICT;
+CREATE TABLE TB_GOODS_BENEFIT_TMP (
+  GOODS_CD     VARCHAR(20) NOT NULL COMMENT '상품코드(상품)',
+  BENEFIT_GB   VARCHAR(20) NOT NULL COMMENT '혜택구분(10:쿠폰할인, 20:무료배송, 30:사은품, 40:신상)'
+)
+COMMENT '상품혜택임시. 상품의 혜택 집계에 의한 발생';
 
 ################################################################################
 #상품즉시할인가
@@ -11812,6 +11815,20 @@ ALTER TABLE TB_CATE_STOCK
       SITE_CD, CATE_NO, BRAND_GROUP_NO, FORMAL_GB
     );
 
+################################################################################
+# 카테고리별재고임시
+################################################################################
+DROP TABLE IF EXISTS TB_CATE_STOCK_TMP RESTRICT;
+CREATE TABLE TB_CATE_STOCK_TMP (
+  SITE_CD         VARCHAR(20)       NOT NULL COMMENT '사이트코드',
+  CATE_NO         INT UNSIGNED      NOT NULL COMMENT '카테고리번호(카테고리)', -- 카테고리번호
+  BRAND_GROUP_NO  INT UNSIGNED      NOT NULL COMMENT '브랜드그룹번호(브랜드그룹)', -- 브랜드그룹번호
+  FORMAL_GB       VARCHAR(20)       NOT NULL COMMENT '정상이월구분(공통코드G009)', -- 정상이월구분(공통코드G009)
+  STOCK_QTY       INT               NOT NULL DEFAULT 0 COMMENT '재고수량', -- 재고수량
+  GOODS_QTY       INT UNSIGNED      NOT NULL DEFAULT 0 COMMENT '상품수' -- 상품수
+)
+COMMENT '카테고리별재고임시. 카테고리별 재고 집계에 의한 발생';
+
 ################################################################################
 # 카테고리상품
 ################################################################################
@@ -13647,3 +13664,24 @@ CREATE TABLE TB_LIMITED_TIME_COUPON (
 )
 COMMENT '선착순쿠폰. 선착순쿠폰 등록에 의한 발생';
 
+################################################################################
+#카테고리필터
+################################################################################
+DROP TABLE IF EXISTS TB_CATE_FILTER;
+CREATE TABLE TB_CATE_FILTER
+(
+  SITE_CD        VARCHAR(20)       NOT NULL COMMENT '사이트코드(공통코드G000)',
+  CATE_GB        VARCHAR(20)       NOT NULL COMMENT '카테고리구분(공통코드G032)',
+  FORMAL_GB      VARCHAR(20)       NOT NULL COMMENT '정상이월구분(공통코드G009)',
+  BRAND_GROUP_NO INT UNSIGNED      NOT NULL COMMENT '브랜드그룹번호(브랜드그룹). 브랜드그룹이 없으면 0',
+  CATE_NO        INT UNSIGNED      NOT NULL COMMENT '카테고리번호(카테고리)',
+  FILTER_GB      VARCHAR(20)       NOT NULL COMMENT '필터구분(BRAND:브랜드, SIZE:사이즈, PRICE:가격, SEASON:시즌, COLOR:컬러, BENEFIT:혜택)',
+  FILTER_CD      VARCHAR(20)       NOT NULL COMMENT '필터코드',
+  FILTER_NM      VARCHAR(50)       NOT NULL COMMENT '필터명',
+  DISP_ORD       SMALLINT UNSIGNED NOT NULL COMMENT '표시순서',
+  REG_NO         INT UNSIGNED      NOT NULL COMMENT '등록자번호',
+  REG_DT         TIMESTAMP         NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '등록일시',
+  PRIMARY KEY (SITE_CD, CATE_GB, BRAND_GROUP_NO, CATE_NO, FORMAL_GB, FILTER_GB, FILTER_CD)
+)
+COMMENT '카테고리필터. 카테고리의 상품 조회를 위한 필터 생성에 의한 발생'
+;

BIN
산출물/3.설계/ST24_TSIT-D202-프로그램목록(V2.7)-20210402.xlsx


+ 1237 - 0
산출물/4.구축/데이터처리/10.카테고리필터생성(TB_CATE_FILTER).sql

@@ -0,0 +1,1237 @@
+################################################################################
+#카테고리필터
+################################################################################
+CREATE TABLE TMP_CATE_FILTER
+(
+  SITE_CD        VARCHAR(20)       NOT NULL COMMENT '사이트코드(공통코드G000)',
+  CATE_GB        VARCHAR(20)       NOT NULL COMMENT '카테고리구분(공통코드G032)',
+  FORMAL_GB      VARCHAR(20)       NOT NULL COMMENT '정상이월구분(공통코드G009)',
+  BRAND_GROUP_NO INT UNSIGNED      NOT NULL COMMENT '브랜드그룹번호(브랜드그룹). 브랜드그룹이 없으면 0',
+  CATE_NO        INT UNSIGNED      NOT NULL COMMENT '카테고리번호(카테고리)',
+  FILTER_GB      VARCHAR(20)       NOT NULL COMMENT '필터구분(BRAND:브랜드, SIZE:사이즈, PRICE:가격, SEASON:시즌, COLOR:컬러, BENEFIT:혜택)',
+  FILTER_CD      VARCHAR(20)       NOT NULL COMMENT '필터코드',
+  FILTER_NM      VARCHAR(50)       NOT NULL COMMENT '필터명',
+  DISP_ORD       SMALLINT UNSIGNED NOT NULL COMMENT '표시순서',
+  REG_NO         INT UNSIGNED      NOT NULL COMMENT '등록자번호',
+  REG_DT         TIMESTAMP         NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '등록일시'
+)
+COMMENT '카테고리필터. 카테고리의 상품 조회를 위한 필터 생성에 의한 발생'
+;
+
+TRUNCATE TABLE TMP_CATE_FILTER;
+
+-- 브랜드 필터 생성
+INSERT INTO TMP_CATE_FILTER (
+       SITE_CD
+     , CATE_GB
+     , FORMAL_GB
+     , BRAND_GROUP_NO
+     , CATE_NO
+     , FILTER_GB
+     , FILTER_CD
+     , FILTER_NM
+     , DISP_ORD
+     , REG_NO
+     , REG_DT
+)
+WITH TAB_FILTER AS (
+    SELECT C4.SITE_CD
+         , C4.CATE_GB
+         , C4.FORMAL_GB
+         , CG.BRAND_GROUP_NO
+         , C4.CATE1_NO
+         , C4.CATE2_NO
+         , C4.CATE3_NO
+         , C4.CATE4_NO
+         , C4.CATE5_NO
+         , B.BRAND_GROUP_NO  AS FILTER_CD
+         , CASE WHEN BG.DISP_NM_LANG = 'EN' THEN
+                BG.BRAND_GROUP_ENM
+           ELSE
+                BG.BRAND_GROUP_KNM
+           END               AS FILTER_NM
+    FROM   TB_CATE_4SRCH C4
+         , TB_CATE_GOODS CG
+         , TB_GOODS G
+         , TB_GOODS_STOCK GS
+         , TB_BRAND B
+         , TB_SITE_BRAND SB
+         , TB_BRAND_GROUP BG
+    WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+    AND    CG.BRAND_GROUP_NO = 0
+    AND    CG.GOODS_CD = G.GOODS_CD
+    AND    G.GOODS_CD = GS.GOODS_CD
+    AND    G.BRAND_CD = B.BRAND_CD
+    AND    B.BRAND_CD = SB.BRAND_CD
+    AND    B.BRAND_GROUP_NO = BG.BRAND_GROUP_NO
+    AND    C4.SITE_CD = 'G000_10'
+    AND    C4.CATE_GB = 'G032_101'
+    AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+    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    B.USE_YN = 'Y' /*사용하는 브랜드*/
+    AND    SB.SITE_CD = 'G000_10'
+    AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
+    AND    BG.USE_YN = 'Y' /*사용하는 브랜드그룹*/
+)
+SELECT SITE_CD
+     , CATE_GB
+     , FORMAL_GB
+     , BRAND_GROUP_NO
+     , CATE_NO
+     , 'BRAND'        AS FILTER_GB
+     , FILTER_CD
+     , FILTER_NM
+     , RANK() OVER(PARTITION BY SITE_CD, CATE_GB, FORMAL_GB, BRAND_GROUP_NO, CATE_NO
+                   ORDER BY FILTER_NM
+                  )   AS DISP_ORD
+     , 0              AS REG_NO
+     , NOW()          AS REG_DT
+FROM   (
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE_NO
+             , FILTER_CD
+             , FILTER_NM
+        FROM   (
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE5_NO       AS CATE_NO
+                     , FILTER_CD
+                     , FILTER_NM
+                FROM   TAB_FILTER
+                WHERE  CATE5_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE4_NO       AS CATE_NO
+                     , FILTER_CD
+                     , FILTER_NM
+                FROM   TAB_FILTER
+                WHERE  CATE4_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE3_NO       AS CATE_NO
+                     , FILTER_CD
+                     , FILTER_NM
+                FROM   TAB_FILTER
+                WHERE  CATE3_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE2_NO       AS CATE_NO
+                     , FILTER_CD
+                     , FILTER_NM
+                FROM   TAB_FILTER
+                WHERE  CATE2_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE1_NO       AS CATE_NO
+                     , FILTER_CD
+                     , FILTER_NM
+                FROM   TAB_FILTER
+                WHERE  CATE1_NO IS NOT NULL
+               ) Z
+        WHERE  CATE_NO IS NOT NULL
+    ) Z
+;
+
+-- 사이즈 필터 생성
+INSERT INTO TMP_CATE_FILTER (
+       SITE_CD
+     , CATE_GB
+     , FORMAL_GB
+     , BRAND_GROUP_NO
+     , CATE_NO
+     , FILTER_GB
+     , FILTER_CD
+     , FILTER_NM
+     , DISP_ORD
+     , REG_NO
+     , REG_DT
+)
+WITH TAB_FILTER AS (
+    SELECT C4.SITE_CD
+         , C4.CATE_GB
+         , C4.FORMAL_GB
+         , CG.BRAND_GROUP_NO
+         , C4.CATE1_NO
+         , C4.CATE2_NO
+         , C4.CATE3_NO
+         , C4.CATE4_NO
+         , C4.CATE5_NO
+         , CONCAT(I.SIZE_GB,'|',S.OPT_CD2) AS FILTER_CD
+         , S.OPT_CD2                       AS FILTER_NM
+    FROM   TB_CATE_4SRCH C4
+         , TB_CATE_GOODS CG
+         , TB_GOODS G
+         , TB_ITEMKIND I
+         , VW_STOCK S
+         , TB_BRAND B
+         , TB_SITE_BRAND SB
+    WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+    AND    CG.BRAND_GROUP_NO = 0
+    AND    CG.GOODS_CD = G.GOODS_CD
+    AND    G.ITEMKIND_CD = I.ITEMKIND_CD
+    AND    G.GOODS_CD = S.GOODS_CD
+    AND    G.BRAND_CD = B.BRAND_CD
+    AND    B.BRAND_CD = SB.BRAND_CD
+    AND    C4.SITE_CD = 'G000_10'
+    AND    C4.CATE_GB = 'G032_101'
+    AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+    AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+    AND    G.SELF_MALL_YN = 'Y' /*몰노출상품*/
+    AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*판매기간*/
+    AND    I.SIZE_GB IS NOT NULL
+    AND    S.CURR_STOCK_QTY - S.BASE_STOCK_QTY > 0 /*재고있는옵션*/
+    AND    S.SOLDOUT_YN = 'N' /*품절이 아닌 옵션*/
+    AND    S.DISP_YN = 'Y' /*노출하는 옵션*/
+    AND    LENGTH(S.OPT_CD2) > 0
+    AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
+    AND    SB.SITE_CD = 'G000_10'
+    AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
+)
+SELECT SITE_CD
+     , CATE_GB
+     , FORMAL_GB
+     , BRAND_GROUP_NO
+     , CATE_NO
+     , 'SIZE'        AS FILTER_GB
+     , FILTER_CD
+     , FILTER_NM
+     , RANK() OVER(PARTITION BY SITE_CD, CATE_GB, FORMAL_GB, BRAND_GROUP_NO, CATE_NO
+                   ORDER BY CASE WHEN FILTER_CD LIKE 'T%' THEN 1
+                                 WHEN FILTER_CD LIKE 'B%' THEN 2
+                                 WHEN FILTER_CD LIKE 'S%' THEN 3
+                                 ELSE 4
+                            END, FILTER_NM
+                  )   AS DISP_ORD
+     , 0              AS REG_NO
+     , NOW()          AS REG_DT
+FROM   (
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE_NO
+             , FILTER_CD
+             , FILTER_NM
+        FROM   (
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE5_NO       AS CATE_NO
+                     , FILTER_CD
+                     , FILTER_NM
+                FROM   TAB_FILTER
+                WHERE  CATE5_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE4_NO       AS CATE_NO
+                     , FILTER_CD
+                     , FILTER_NM
+                FROM   TAB_FILTER
+                WHERE  CATE4_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE3_NO       AS CATE_NO
+                     , FILTER_CD
+                     , FILTER_NM
+                FROM   TAB_FILTER
+                WHERE  CATE3_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE2_NO       AS CATE_NO
+                     , FILTER_CD
+                     , FILTER_NM
+                FROM   TAB_FILTER
+                WHERE  CATE2_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE1_NO       AS CATE_NO
+                     , FILTER_CD
+                     , FILTER_NM
+                FROM   TAB_FILTER
+                WHERE  CATE1_NO IS NOT NULL
+               ) Z
+        WHERE  CATE_NO IS NOT NULL
+    ) Z
+;
+
+-- 가격 필터 생성
+INSERT INTO TMP_CATE_FILTER (
+       SITE_CD
+     , CATE_GB
+     , FORMAL_GB
+     , BRAND_GROUP_NO
+     , CATE_NO
+     , FILTER_GB
+     , FILTER_CD
+     , FILTER_NM
+     , DISP_ORD
+     , REG_NO
+     , REG_DT
+)
+WITH TAB_FILTER AS (
+    SELECT C4.SITE_CD
+         , C4.CATE_GB
+         , C4.FORMAL_GB
+         , CG.BRAND_GROUP_NO
+         , C4.CATE1_NO
+         , C4.CATE2_NO
+         , C4.CATE3_NO
+         , C4.CATE4_NO
+         , C4.CATE5_NO
+         , FN_GET_BENEFIT_PRICE('P',G.GOODS_CD,G.CURR_PRICE,'G100_10') AS CURR_PRICE
+    FROM   TB_CATE_4SRCH C4
+         , TB_CATE_GOODS CG
+         , TB_GOODS G
+         , TB_GOODS_STOCK GS
+         , TB_BRAND B
+         , TB_SITE_BRAND SB
+    WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+    AND    CG.BRAND_GROUP_NO = 0
+    AND    CG.GOODS_CD = G.GOODS_CD
+    AND    CG.GOODS_CD = GS.GOODS_CD
+    AND    G.BRAND_CD = B.BRAND_CD
+    AND    B.BRAND_CD = SB.BRAND_CD
+    AND    C4.SITE_CD = 'G000_10'
+    AND    C4.CATE_GB = 'G032_101'
+    AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+    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    B.USE_YN = 'Y' /*사용하는 브랜드*/
+    AND    SB.SITE_CD = 'G000_10'
+    AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
+)
+, TAB_PRICE AS (
+    SELECT SITE_CD
+         , CATE_GB
+         , FORMAL_GB
+         , BRAND_GROUP_NO
+         , CATE_NO
+         , FLOOR(MIN_CURR_PRICE / 1000) * 1000                   AS PRICE1
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 1) / 1000) * 1000 AS PRICE2
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 2) / 1000) * 1000 AS PRICE3
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 3) / 1000) * 1000 AS PRICE4
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 4) / 1000) * 1000 AS PRICE5
+         , FLOOR(MAX_CURR_PRICE / 1000) * 1000                   AS PRICE6
+    FROM   (
+            SELECT SITE_CD
+                 , CATE_GB
+                 , FORMAL_GB
+                 , BRAND_GROUP_NO
+                 , CATE1_NO        AS CATE_NO
+                 , MIN(CURR_PRICE) AS MIN_CURR_PRICE                    /*최소현재판매가*/
+                 , MAX(CURR_PRICE) AS MAX_CURR_PRICE                    /*최대현재판매가*/
+                 , (MAX(CURR_PRICE) - MIN(CURR_PRICE)) / 5 AS SLICE_VAL /*분할값*/
+            FROM   TAB_FILTER
+            WHERE  CATE1_NO IS NOT NULL
+            GROUP  BY SITE_CD, CATE_GB, FORMAL_GB, BRAND_GROUP_NO, CATE1_NO
+           ) Z
+    UNION ALL
+    SELECT SITE_CD
+         , CATE_GB
+         , FORMAL_GB
+         , BRAND_GROUP_NO
+         , CATE_NO
+         , FLOOR(MIN_CURR_PRICE / 1000) * 1000                   AS PRICE1
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 1) / 1000) * 1000 AS PRICE2
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 2) / 1000) * 1000 AS PRICE3
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 3) / 1000) * 1000 AS PRICE4
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 4) / 1000) * 1000 AS PRICE5
+         , FLOOR(MAX_CURR_PRICE / 1000) * 1000                   AS PRICE6
+    FROM   (
+            SELECT SITE_CD
+                 , CATE_GB
+                 , FORMAL_GB
+                 , BRAND_GROUP_NO
+                 , CATE2_NO        AS CATE_NO
+                 , MIN(CURR_PRICE) AS MIN_CURR_PRICE                    /*최소현재판매가*/
+                 , MAX(CURR_PRICE) AS MAX_CURR_PRICE                    /*최대현재판매가*/
+                 , (MAX(CURR_PRICE) - MIN(CURR_PRICE)) / 5 AS SLICE_VAL /*분할값*/
+            FROM   TAB_FILTER
+            WHERE  CATE2_NO IS NOT NULL
+            GROUP  BY SITE_CD, CATE_GB, FORMAL_GB, BRAND_GROUP_NO, CATE1_NO
+           ) Z
+    UNION ALL
+    SELECT SITE_CD
+         , CATE_GB
+         , FORMAL_GB
+         , BRAND_GROUP_NO
+         , CATE_NO
+         , FLOOR(MIN_CURR_PRICE / 1000) * 1000                   AS PRICE1
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 1) / 1000) * 1000 AS PRICE2
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 2) / 1000) * 1000 AS PRICE3
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 3) / 1000) * 1000 AS PRICE4
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 4) / 1000) * 1000 AS PRICE5
+         , FLOOR(MAX_CURR_PRICE / 1000) * 1000                   AS PRICE6
+    FROM   (
+            SELECT SITE_CD
+                 , CATE_GB
+                 , FORMAL_GB
+                 , BRAND_GROUP_NO
+                 , CATE3_NO        AS CATE_NO
+                 , MIN(CURR_PRICE) AS MIN_CURR_PRICE                    /*최소현재판매가*/
+                 , MAX(CURR_PRICE) AS MAX_CURR_PRICE                    /*최대현재판매가*/
+                 , (MAX(CURR_PRICE) - MIN(CURR_PRICE)) / 5 AS SLICE_VAL /*분할값*/
+            FROM   TAB_FILTER
+            WHERE  CATE3_NO IS NOT NULL
+            GROUP  BY SITE_CD, CATE_GB, FORMAL_GB, BRAND_GROUP_NO, CATE1_NO
+           ) Z
+    UNION ALL
+    SELECT SITE_CD
+         , CATE_GB
+         , FORMAL_GB
+         , BRAND_GROUP_NO
+         , CATE_NO
+         , FLOOR(MIN_CURR_PRICE / 1000) * 1000                   AS PRICE1
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 1) / 1000) * 1000 AS PRICE2
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 2) / 1000) * 1000 AS PRICE3
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 3) / 1000) * 1000 AS PRICE4
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 4) / 1000) * 1000 AS PRICE5
+         , FLOOR(MAX_CURR_PRICE / 1000) * 1000                   AS PRICE6
+    FROM   (
+            SELECT SITE_CD
+                 , CATE_GB
+                 , FORMAL_GB
+                 , BRAND_GROUP_NO
+                 , CATE4_NO        AS CATE_NO
+                 , MIN(CURR_PRICE) AS MIN_CURR_PRICE                    /*최소현재판매가*/
+                 , MAX(CURR_PRICE) AS MAX_CURR_PRICE                    /*최대현재판매가*/
+                 , (MAX(CURR_PRICE) - MIN(CURR_PRICE)) / 5 AS SLICE_VAL /*분할값*/
+            FROM   TAB_FILTER
+            WHERE  CATE4_NO IS NOT NULL
+            GROUP  BY SITE_CD, CATE_GB, FORMAL_GB, BRAND_GROUP_NO, CATE1_NO
+           ) Z
+    UNION ALL
+    SELECT SITE_CD
+         , CATE_GB
+         , FORMAL_GB
+         , BRAND_GROUP_NO
+         , CATE_NO
+         , FLOOR(MIN_CURR_PRICE / 1000) * 1000                   AS PRICE1
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 1) / 1000) * 1000 AS PRICE2
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 2) / 1000) * 1000 AS PRICE3
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 3) / 1000) * 1000 AS PRICE4
+         , FLOOR((MIN_CURR_PRICE + SLICE_VAL * 4) / 1000) * 1000 AS PRICE5
+         , FLOOR(MAX_CURR_PRICE / 1000) * 1000                   AS PRICE6
+    FROM   (
+            SELECT SITE_CD
+                 , CATE_GB
+                 , FORMAL_GB
+                 , BRAND_GROUP_NO
+                 , CATE5_NO        AS CATE_NO
+                 , MIN(CURR_PRICE) AS MIN_CURR_PRICE                    /*최소현재판매가*/
+                 , MAX(CURR_PRICE) AS MAX_CURR_PRICE                    /*최대현재판매가*/
+                 , (MAX(CURR_PRICE) - MIN(CURR_PRICE)) / 5 AS SLICE_VAL /*분할값*/
+            FROM   TAB_FILTER
+            WHERE  CATE5_NO IS NOT NULL
+            GROUP  BY SITE_CD, CATE_GB, FORMAL_GB, BRAND_GROUP_NO, CATE1_NO
+           ) Z
+)
+SELECT SITE_CD
+     , CATE_GB
+     , FORMAL_GB
+     , BRAND_GROUP_NO
+     , CATE_NO
+     , 'PRICE'        AS FILTER_GB
+     , FILTER_CD
+     , FILTER_NM
+     , RANK() OVER(PARTITION BY SITE_CD, CATE_GB, FORMAL_GB, BRAND_GROUP_NO, CATE_NO
+                   ORDER BY DISP_ORD
+                   )  AS DISP_ORD
+     , 0              AS REG_NO
+     , NOW()          AS REG_DT
+FROM   (
+        SELECT SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE_NO
+             , PRICE1         AS FILTER_CD
+             , PRICE1         AS FILTER_NM
+             , 1              AS DISP_ORD
+        FROM   TAB_PRICE
+        UNION ALL
+        SELECT SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE_NO
+             , PRICE2         AS FILTER_CD
+             , PRICE2         AS FILTER_NM
+             , 2              AS DISP_ORD
+        FROM   TAB_PRICE
+        UNION ALL
+        SELECT SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE_NO
+             , PRICE3         AS FILTER_CD
+             , PRICE3         AS FILTER_NM
+             , 3              AS DISP_ORD
+        FROM   TAB_PRICE
+        UNION ALL
+        SELECT SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE_NO
+             , PRICE4         AS FILTER_CD
+             , PRICE4         AS FILTER_NM
+             , 4              AS DISP_ORD
+        FROM   TAB_PRICE
+        UNION ALL
+        SELECT SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE_NO
+             , PRICE5         AS FILTER_CD
+             , PRICE5         AS FILTER_NM
+             , 5              AS DISP_ORD
+        FROM   TAB_PRICE
+        UNION ALL
+        SELECT SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE_NO
+             , PRICE6         AS FILTER_CD
+             , PRICE6         AS FILTER_NM
+             , 6              AS DISP_ORD
+        FROM   TAB_PRICE
+       ) Z
+;
+
+-- 연령대 필터 생성
+INSERT INTO TMP_CATE_FILTER (
+       SITE_CD
+     , CATE_GB
+     , FORMAL_GB
+     , BRAND_GROUP_NO
+     , CATE_NO
+     , FILTER_GB
+     , FILTER_CD
+     , FILTER_NM
+     , DISP_ORD
+     , REG_NO
+     , REG_DT
+)
+WITH TAB_FILTER AS (
+    SELECT C4.SITE_CD
+         , C4.CATE_GB
+         , C4.FORMAL_GB
+         , CG.BRAND_GROUP_NO
+         , C4.CATE1_NO
+         , C4.CATE2_NO
+         , C4.CATE3_NO
+         , C4.CATE4_NO
+         , C4.CATE5_NO
+         , G.AGE_GRP_CD      AS FILTER_CD
+    FROM   TB_CATE_4SRCH C4
+         , TB_CATE_GOODS CG
+         , TB_GOODS G
+         , TB_GOODS_STOCK GS
+         , TB_BRAND B
+         , TB_SITE_BRAND SB
+    WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+    AND    CG.BRAND_GROUP_NO = 0
+    AND    CG.GOODS_CD = G.GOODS_CD
+    AND    CG.GOODS_CD = GS.GOODS_CD
+    AND    G.BRAND_CD = B.BRAND_CD
+    AND    B.BRAND_CD = SB.BRAND_CD
+    AND    C4.SITE_CD = 'G000_10'
+    AND    C4.CATE_GB = 'G032_101'
+    AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+    AND    G.GOODS_STAT = 'G008_90' /*승인완료상품*/
+    AND    G.SELF_MALL_YN = 'Y' /*몰노출상품*/
+    AND    NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*판매기간*/
+    AND    G.AGE_GRP_CD IS NOT NULL
+    AND    GS.STOCK_QTY > 0 /*재고있는상품*/
+    AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
+    AND    SB.SITE_CD = 'G000_10'
+    AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
+)
+SELECT A.SITE_CD
+     , A.CATE_GB
+     , A.FORMAL_GB
+     , A.BRAND_GROUP_NO
+     , A.CATE_NO
+     , 'AGE'          AS FILTER_GB
+     , A.FILTER_CD
+     , CC.CD_NM       AS FILTER_NM
+     , RANK() OVER(PARTITION BY A.SITE_CD, A.CATE_GB, A.FORMAL_GB, A.BRAND_GROUP_NO, A.CATE_NO
+                   ORDER BY CC.DISP_ORD
+                  )   AS DISP_ORD
+     , 0              AS REG_NO
+     , NOW()          AS REG_DT
+FROM   (
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE_NO
+             , FILTER_CD
+        FROM   (
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE5_NO       AS CATE_NO
+                     , FILTER_CD
+                FROM   TAB_FILTER
+                WHERE  CATE5_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE4_NO       AS CATE_NO
+                     , FILTER_CD
+                FROM   TAB_FILTER
+                WHERE  CATE4_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE3_NO       AS CATE_NO
+                     , FILTER_CD
+                FROM   TAB_FILTER
+                WHERE  CATE3_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE2_NO       AS CATE_NO
+                     , FILTER_CD
+                FROM   TAB_FILTER
+                WHERE  CATE2_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE1_NO       AS CATE_NO
+                     , FILTER_CD
+                FROM   TAB_FILTER
+                WHERE  CATE1_NO IS NOT NULL
+               ) Z
+        WHERE  CATE_NO IS NOT NULL
+       ) A
+     , TB_COMMON_CODE CC
+WHERE  A.FILTER_CD = CC.CD
+AND    CC.CD_GB = 'G023'
+AND    CC.USE_YN = 'Y'
+;
+
+-- 시즌 필터 생성
+INSERT INTO TMP_CATE_FILTER (
+       SITE_CD
+     , CATE_GB
+     , FORMAL_GB
+     , BRAND_GROUP_NO
+     , CATE_NO
+     , FILTER_GB
+     , FILTER_CD
+     , FILTER_NM
+     , DISP_ORD
+     , REG_NO
+     , REG_DT
+)
+WITH TAB_FILTER AS (
+    SELECT C4.SITE_CD
+         , C4.CATE_GB
+         , C4.FORMAL_GB
+         , CG.BRAND_GROUP_NO
+         , C4.CATE1_NO
+         , C4.CATE2_NO
+         , C4.CATE3_NO
+         , C4.CATE4_NO
+         , C4.CATE5_NO
+         , G.SEASON_CD       AS FILTER_CD
+    FROM   TB_CATE_4SRCH C4
+         , TB_CATE_GOODS CG
+         , TB_GOODS G
+         , TB_GOODS_STOCK GS
+         , TB_BRAND B
+         , TB_SITE_BRAND SB
+    WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+    AND    CG.BRAND_GROUP_NO = 0
+    AND    CG.GOODS_CD = G.GOODS_CD
+    AND    CG.GOODS_CD = GS.GOODS_CD
+    AND    G.BRAND_CD = B.BRAND_CD
+    AND    B.BRAND_CD = SB.BRAND_CD
+    AND    C4.SITE_CD = 'G000_10'
+    AND    C4.CATE_GB = 'G032_101'
+    AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+    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    B.USE_YN = 'Y' /*사용하는 브랜드*/
+    AND    SB.SITE_CD = 'G000_10'
+    AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
+)
+SELECT A.SITE_CD
+     , A.CATE_GB
+     , A.FORMAL_GB
+     , A.BRAND_GROUP_NO
+     , A.CATE_NO
+     , 'SEASON'         AS FILTER_GB
+     , A.FILTER_CD
+     , CC.CD_NM         AS FILTER_NM
+     , RANK() OVER(PARTITION BY A.SITE_CD, A.CATE_GB, A.FORMAL_GB, A.BRAND_GROUP_NO, A.CATE_NO
+                   ORDER BY CC.DISP_ORD
+                  )   AS DISP_ORD
+     , 0              AS REG_NO
+     , NOW()          AS REG_DT
+FROM   (
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE_NO
+             , FILTER_CD
+        FROM   (
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE5_NO       AS CATE_NO
+                     , FILTER_CD
+                FROM   TAB_FILTER
+                WHERE  CATE5_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE4_NO       AS CATE_NO
+                     , FILTER_CD
+                FROM   TAB_FILTER
+                WHERE  CATE4_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE3_NO       AS CATE_NO
+                     , FILTER_CD
+                FROM   TAB_FILTER
+                WHERE  CATE3_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE2_NO       AS CATE_NO
+                     , FILTER_CD
+                FROM   TAB_FILTER
+                WHERE  CATE2_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE1_NO       AS CATE_NO
+                     , FILTER_CD
+                FROM   TAB_FILTER
+                WHERE  CATE1_NO IS NOT NULL
+               ) Z
+        WHERE  CATE_NO IS NOT NULL
+       ) A
+     , TB_COMMON_CODE CC
+WHERE  A.FILTER_CD = CC.CD
+AND    CC.CD_GB = 'G006'
+AND    CC.USE_YN = 'Y'
+;
+
+-- 색상 필터 생성
+INSERT INTO TMP_CATE_FILTER (
+       SITE_CD
+     , CATE_GB
+     , FORMAL_GB
+     , BRAND_GROUP_NO
+     , CATE_NO
+     , FILTER_GB
+     , FILTER_CD
+     , FILTER_NM
+     , DISP_ORD
+     , REG_NO
+     , REG_DT
+)
+WITH TAB_FILTER AS (
+    SELECT C4.SITE_CD
+         , C4.CATE_GB
+         , C4.FORMAL_GB
+         , CG.BRAND_GROUP_NO
+         , C4.CATE1_NO
+         , C4.CATE2_NO
+         , C4.CATE3_NO
+         , C4.CATE4_NO
+         , C4.CATE5_NO
+         , C.COLOR_GRP_CD    AS FILTER_CD
+    FROM   TB_CATE_4SRCH C4
+         , TB_CATE_GOODS CG
+         , TB_GOODS G
+         , TB_GOODS_STOCK GS
+         , TB_OPTION O
+         , TB_COLOR C
+         , TB_BRAND B
+         , TB_SITE_BRAND SB
+    WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+    AND    CG.BRAND_GROUP_NO = 0
+    AND    CG.GOODS_CD = G.GOODS_CD
+    AND    CG.GOODS_CD = GS.GOODS_CD
+    AND    CG.GOODS_CD = O.GOODS_CD
+    AND    O.OPT_CD1 = C.COLOR_CD
+    AND    G.BRAND_CD = B.BRAND_CD
+    AND    B.BRAND_CD = SB.BRAND_CD
+    AND    C4.SITE_CD = 'G000_10'
+    AND    C4.CATE_GB = 'G032_101'
+    AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+    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    O.SOLDOUT_YN = 'N' /*품절이 아닌 옵션*/
+    AND    O.DISP_YN = 'Y' /*노출하는 옵션*/
+    AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
+    AND    SB.SITE_CD = 'G000_10'
+    AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
+)
+SELECT A.SITE_CD
+     , A.CATE_GB
+     , A.FORMAL_GB
+     , A.BRAND_GROUP_NO
+     , A.CATE_NO
+     , 'COLOR'          AS FILTER_GB
+     , A.FILTER_CD
+     , CC.CD_DESC       AS FILTER_NM
+     , RANK() OVER(PARTITION BY A.SITE_CD, A.CATE_GB, A.FORMAL_GB, A.BRAND_GROUP_NO, A.CATE_NO
+                   ORDER BY CC.DISP_ORD
+                  )   AS DISP_ORD
+     , 0              AS REG_NO
+     , NOW()          AS REG_DT
+FROM   (
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE_NO
+             , FILTER_CD
+        FROM   (
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE5_NO       AS CATE_NO
+                     , FILTER_CD
+                FROM   TAB_FILTER
+                WHERE  CATE5_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE4_NO       AS CATE_NO
+                     , FILTER_CD
+                FROM   TAB_FILTER
+                WHERE  CATE4_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE3_NO       AS CATE_NO
+                     , FILTER_CD
+                FROM   TAB_FILTER
+                WHERE  CATE3_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE2_NO       AS CATE_NO
+                     , FILTER_CD
+                FROM   TAB_FILTER
+                WHERE  CATE2_NO IS NOT NULL
+                UNION ALL
+                SELECT SITE_CD
+                     , CATE_GB
+                     , FORMAL_GB
+                     , BRAND_GROUP_NO
+                     , CATE1_NO       AS CATE_NO
+                     , FILTER_CD
+                FROM   TAB_FILTER
+                WHERE  CATE1_NO IS NOT NULL
+               ) Z
+        WHERE  CATE_NO IS NOT NULL
+       ) A
+     , TB_COMMON_CODE CC
+WHERE  A.FILTER_CD = CC.CD
+AND    CC.CD_GB = 'G072'
+AND    CC.USE_YN = 'Y'
+;
+
+-- 혜택 필터 생성
+INSERT INTO TMP_CATE_FILTER (
+       SITE_CD
+     , CATE_GB
+     , FORMAL_GB
+     , BRAND_GROUP_NO
+     , CATE_NO
+     , FILTER_GB
+     , FILTER_CD
+     , FILTER_NM
+     , DISP_ORD
+     , REG_NO
+     , REG_DT
+)
+WITH TAB_FILTER AS (
+    SELECT C4.SITE_CD
+         , C4.CATE_GB
+         , C4.FORMAL_GB
+         , CG.BRAND_GROUP_NO
+         , C4.CATE1_NO
+         , C4.CATE2_NO
+         , C4.CATE3_NO
+         , C4.CATE4_NO
+         , C4.CATE5_NO
+         , G.GOODS_CD
+         , G.FORMAL_GB       AS GOODS_FORMAL_GB /*상품의정상이월구분*/
+         , DFP.MIN_ORD_AMT
+         , FN_GET_BENEFIT_PRICE('P',G.GOODS_CD,G.CURR_PRICE,'G100_10') AS CURR_PRICE
+    FROM   TB_CATE_4SRCH C4
+         , TB_CATE_GOODS CG
+         , TB_GOODS G
+         , TB_GOODS_STOCK GS
+         , TB_DELV_FEE_POLICY DFP
+         , TB_BRAND B
+         , TB_SITE_BRAND SB
+    WHERE  C4.LEAF_CATE_NO = CG.CATE_NO
+    AND    CG.BRAND_GROUP_NO = 0
+    AND    CG.GOODS_CD = G.GOODS_CD
+    AND    CG.GOODS_CD = GS.GOODS_CD
+    AND    G.DELV_FEE_CD = DFP.DELV_FEE_CD
+    AND    G.BRAND_CD = B.BRAND_CD
+    AND    B.BRAND_CD = SB.BRAND_CD
+    AND    C4.SITE_CD = 'G000_10'
+    AND    C4.CATE_GB = 'G032_101'
+    AND    C4.CATE_TYPE = 'G031_10' /*상품카테고리*/
+    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' /*사용하는배송비정책*/
+    AND    B.USE_YN = 'Y' /*사용하는 브랜드*/
+    AND    SB.SITE_CD = 'G000_10'
+    AND    SB.USE_YN = 'Y' /*사이트에서 사용하는 브랜드*/
+) 
+SELECT SITE_CD
+     , CATE_GB
+     , FORMAL_GB
+     , BRAND_GROUP_NO
+     , CATE_NO
+     , 'BENEFIT'        AS FILTER_GB
+     , FILTER_CD
+     , CASE WHEN FILTER_CD = '10' THEN '쿠폰할인'
+            WHEN FILTER_CD = '20' THEN '무료배송'
+            WHEN FILTER_CD = '30' THEN '사은품'
+            WHEN FILTER_CD = '40' THEN '신상'
+       END              AS FILTER_NM
+     , RANK() OVER(PARTITION BY SITE_CD, CATE_GB, FORMAL_GB, BRAND_GROUP_NO, CATE_NO
+                   ORDER BY FILTER_CD
+                  )   AS DISP_ORD
+     , 0              AS REG_NO
+     , NOW()          AS REG_DT
+FROM   (
+        SELECT DISTINCT
+               A.SITE_CD
+             , A.CATE_GB
+             , A.FORMAL_GB
+             , A.BRAND_GROUP_NO
+             , A.CATE5_NO       AS CATE_NO
+             , '10'             AS FILTER_CD
+        FROM   TAB_FILTER A
+             , TB_GOODS_BENEFIT B
+        WHERE  A.GOODS_CD = B.GOODS_CD
+        AND    A.CATE5_NO IS NOT NULL
+        AND    B.CPN_YN = 'Y'
+        UNION ALL
+        SELECT DISTINCT
+               A.SITE_CD
+             , A.CATE_GB
+             , A.FORMAL_GB
+             , A.BRAND_GROUP_NO
+             , A.CATE4_NO       AS CATE_NO
+             , '10'             AS FILTER_CD
+        FROM   TAB_FILTER A
+             , TB_GOODS_BENEFIT B
+        WHERE  A.GOODS_CD = B.GOODS_CD
+        AND    A.CATE4_NO IS NOT NULL
+        AND    B.CPN_YN = 'Y'
+        UNION ALL
+        SELECT DISTINCT
+               A.SITE_CD
+             , A.CATE_GB
+             , A.FORMAL_GB
+             , A.BRAND_GROUP_NO
+             , A.CATE3_NO       AS CATE_NO
+             , '10'             AS FILTER_CD
+        FROM   TAB_FILTER A
+             , TB_GOODS_BENEFIT B
+        WHERE  A.GOODS_CD = B.GOODS_CD
+        AND    A.CATE3_NO IS NOT NULL
+        AND    B.CPN_YN = 'Y'
+        UNION ALL
+        SELECT DISTINCT
+               A.SITE_CD
+             , A.CATE_GB
+             , A.FORMAL_GB
+             , A.BRAND_GROUP_NO
+             , A.CATE2_NO       AS CATE_NO
+             , '10'             AS FILTER_CD
+        FROM   TAB_FILTER A
+             , TB_GOODS_BENEFIT B
+        WHERE  A.GOODS_CD = B.GOODS_CD
+        AND    A.CATE2_NO IS NOT NULL
+        AND    B.CPN_YN = 'Y'
+        UNION ALL
+        SELECT DISTINCT
+               A.SITE_CD
+             , A.CATE_GB
+             , A.FORMAL_GB
+             , A.BRAND_GROUP_NO
+             , A.CATE1_NO       AS CATE_NO
+             , '10'             AS FILTER_CD
+        FROM   TAB_FILTER A
+             , TB_GOODS_BENEFIT B
+        WHERE  A.GOODS_CD = B.GOODS_CD
+        AND    A.CATE1_NO IS NOT NULL
+        AND    B.CPN_YN = 'Y'
+        UNION ALL
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE5_NO       AS CATE_NO
+             , '20'           AS FILTER_CD
+        FROM   TAB_FILTER
+        WHERE  CATE5_NO IS NOT NULL
+        AND    MIN_ORD_AMT <= CURR_PRICE
+        UNION ALL
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE4_NO       AS CATE_NO
+             , '20'           AS FILTER_CD
+        FROM   TAB_FILTER
+        WHERE  CATE4_NO IS NOT NULL
+        AND    MIN_ORD_AMT <= CURR_PRICE
+        UNION ALL
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE3_NO       AS CATE_NO
+             , '20'           AS FILTER_CD
+        FROM   TAB_FILTER
+        WHERE  CATE3_NO IS NOT NULL
+        AND    MIN_ORD_AMT <= CURR_PRICE
+        UNION ALL
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE2_NO       AS CATE_NO
+             , '20'           AS FILTER_CD
+        FROM   TAB_FILTER
+        WHERE  CATE2_NO IS NOT NULL
+        AND    MIN_ORD_AMT <= CURR_PRICE
+        UNION ALL
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE1_NO       AS CATE_NO
+             , '20'           AS FILTER_CD
+        FROM   TAB_FILTER
+        WHERE  CATE1_NO IS NOT NULL
+        AND    MIN_ORD_AMT <= CURR_PRICE
+        UNION ALL
+        SELECT DISTINCT
+               A.SITE_CD
+             , A.CATE_GB
+             , A.FORMAL_GB
+             , A.BRAND_GROUP_NO
+             , A.CATE5_NO       AS CATE_NO
+             , '30'             AS FILTER_CD
+        FROM   TAB_FILTER A
+             , TB_GOODS_BENEFIT B
+        WHERE  A.GOODS_CD = B.GOODS_CD
+        AND    A.CATE5_NO IS NOT NULL
+        AND    B.FREEGIFT_YN = 'Y'
+        UNION ALL
+        SELECT DISTINCT
+               A.SITE_CD
+             , A.CATE_GB
+             , A.FORMAL_GB
+             , A.BRAND_GROUP_NO
+             , A.CATE4_NO       AS CATE_NO
+             , '30'             AS FILTER_CD
+        FROM   TAB_FILTER A
+             , TB_GOODS_BENEFIT B
+        WHERE  A.GOODS_CD = B.GOODS_CD
+        AND    A.CATE4_NO IS NOT NULL
+        AND    B.FREEGIFT_YN = 'Y'
+        UNION ALL
+        SELECT DISTINCT
+               A.SITE_CD
+             , A.CATE_GB
+             , A.FORMAL_GB
+             , A.BRAND_GROUP_NO
+             , A.CATE3_NO       AS CATE_NO
+             , '30'             AS FILTER_CD
+        FROM   TAB_FILTER A
+             , TB_GOODS_BENEFIT B
+        WHERE  A.GOODS_CD = B.GOODS_CD
+        AND    A.CATE3_NO IS NOT NULL
+        AND    B.FREEGIFT_YN = 'Y'
+        UNION ALL
+        SELECT DISTINCT
+               A.SITE_CD
+             , A.CATE_GB
+             , A.FORMAL_GB
+             , A.BRAND_GROUP_NO
+             , A.CATE2_NO       AS CATE_NO
+             , '30'             AS FILTER_CD
+        FROM   TAB_FILTER A
+             , TB_GOODS_BENEFIT B
+        WHERE  A.GOODS_CD = B.GOODS_CD
+        AND    A.CATE2_NO IS NOT NULL
+        AND    B.FREEGIFT_YN = 'Y'
+        UNION ALL
+        SELECT DISTINCT
+               A.SITE_CD
+             , A.CATE_GB
+             , A.FORMAL_GB
+             , A.BRAND_GROUP_NO
+             , A.CATE1_NO       AS CATE_NO
+             , '30'             AS FILTER_CD
+        FROM   TAB_FILTER A
+             , TB_GOODS_BENEFIT B
+        WHERE  A.GOODS_CD = B.GOODS_CD
+        AND    A.CATE1_NO IS NOT NULL
+        AND    B.FREEGIFT_YN = 'Y'
+        UNION ALL
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE5_NO       AS CATE_NO
+             , '40'           AS FILTER_CD
+        FROM   TAB_FILTER
+        WHERE  CATE5_NO IS NOT NULL
+        AND    GOODS_FORMAL_GB = 'G009_10'
+        UNION ALL
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE4_NO       AS CATE_NO
+             , '40'           AS FILTER_CD
+        FROM   TAB_FILTER
+        WHERE  CATE4_NO IS NOT NULL
+        AND    GOODS_FORMAL_GB = 'G009_10'
+        UNION ALL
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE3_NO       AS CATE_NO
+             , '40'           AS FILTER_CD
+        FROM   TAB_FILTER
+        WHERE  CATE3_NO IS NOT NULL
+        AND    GOODS_FORMAL_GB = 'G009_10'
+        UNION ALL
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE2_NO       AS CATE_NO
+             , '40'           AS FILTER_CD
+        FROM   TAB_FILTER
+        WHERE  CATE2_NO IS NOT NULL
+        AND    GOODS_FORMAL_GB = 'G009_10'
+        UNION ALL
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE1_NO       AS CATE_NO
+             , '40'           AS FILTER_CD
+        FROM   TAB_FILTER
+        WHERE  CATE1_NO IS NOT NULL
+        AND    GOODS_FORMAL_GB = 'G009_10'
+    ) Z
+;
+
+TRUNCATE TABLE TB_CATE_FILTER;
+
+INSERT INTO TB_CATE_FILTER
+SELECT *
+FROM   TMP_CATE_FILTER
+;

+ 247 - 0
산출물/4.구축/데이터처리/11.상품혜택생성(TB_GOODS_BENEFIT).sql

@@ -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
+;

BIN
산출물/5.시험/173089_아이스타일24 결제 TEST용 5천원 상품권_100매.xlsx