浏览代码

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

swkim 5 年之前
父节点
当前提交
78a2f1f374

二进制
산출물/2.분석/01.마스터테이블(로딩용)/통합품번분류코드_v2.20_20210512.xlsx


+ 154 - 151
산출물/3.설계/05.DB-Object/03.db_function/FN_GET_APPLY_CPN1_ID.sql

@@ -1,158 +1,161 @@
 CREATE DEFINER=`style`@`%` FUNCTION `style`.`FN_GET_APPLY_CPN1_ID`(I_GOODS_CD varchar(50), I_FRONT_GB char) RETURNS int
 BEGIN
-	DECLARE O_RET_VALUE INT;
-	DECLARE O_CURR_PRICE INT;
-	DECLARE O_DC_VAL INT;
+    DECLARE O_RET_VALUE INT;
+    DECLARE O_CURR_PRICE INT;
+    DECLARE O_DC_VAL INT;
 
-	SET O_RET_VALUE = 0;
-	SET O_DC_VAL = 0;
+    SET O_RET_VALUE = 0;
+    SET O_DC_VAL = 0;
 
-	SELECT CURR_PRICE
-	INTO   O_CURR_PRICE -- 상품금액
-	FROM   TB_GOODS
-	WHERE  GOODS_CD = I_GOODS_CD
-	;
+    SELECT CURR_PRICE
+    INTO   O_CURR_PRICE -- 상품금액
+    FROM   TB_GOODS
+    WHERE  GOODS_CD = I_GOODS_CD
+    ;
 
-	WITH GOODS_DATA AS (
-		SELECT G.GOODS_CD
-		     , G.CURR_PRICE
-		     , G.BRAND_CD
-		     , G.SUPPLY_COMP_CD
-		FROM   TB_GOODS G
-		WHERE  1=1
-		AND    G.GOODS_CD = I_GOODS_CD
-	)
-	SELECT Y.CPN_ID
-	INTO   O_RET_VALUE
-	FROM (
-		SELECT CP.CPN_ID
-		     , I_FRONT_GB AS FRONT_GB
-		     , CASE WHEN CP.DC_WAY IN ('G240_11')
-		            THEN CASE WHEN CP.MAX_DC_AMT > (Z.CURR_PRICE * CP.DC_PVAL) / 100
-		                      THEN (Z.CURR_PRICE * CP.DC_PVAL) / 100
-		                      ELSE CP.MAX_DC_AMT
-		                      END
-		            ELSE CP.DC_PVAL
-		            END  DC_PVAL
-		     , CASE WHEN CP.DC_WAY IN ('G240_11')
-		            THEN CASE WHEN CP.MAX_DC_AMT > (Z.CURR_PRICE * CP.DC_MVAL) / 100
-		                      THEN (Z.CURR_PRICE * CP.DC_MVAL) / 100
-		                      ELSE CP.MAX_DC_AMT
-		                      END
-		            ELSE CP.DC_MVAL
-		            END  DC_MVAL
-		     , CASE WHEN CP.DC_WAY IN ('G240_11')
-		            THEN CASE WHEN CP.MAX_DC_AMT > (Z.CURR_PRICE * CP.DC_AVAL) / 100
-		                      THEN (Z.CURR_PRICE * CP.DC_AVAL) / 100
-		                      ELSE CP.MAX_DC_AMT
-		                      END
-		            ELSE CP.DC_AVAL
-		            END  DC_AVAL
-		FROM   TB_COUPON CP
-		INNER  JOIN TB_COUPON_CUST_GBN CGB
-		ON     CP.CPN_ID = CGB.CPN_ID
-		AND    CGB.USABLE_CUST_GB IN ('G100_10') -- 일반회원
-		INNER  JOIN TB_COUPON_CUST_GRADE CGR
-		ON     CP.CPN_ID = CGR.CPN_ID
-		AND    CGR.USABLE_CUST_GRADE IN ('G110_10', 'G110_20', 'G110_30', 'G110_40', 'G110_50') -- 전체등급
-		INNER  JOIN (
-			SELECT X.*
-			FROM (
-				SELECT CR.CPN_ID
-				     , GD.GOODS_CD
-				     , GD.CURR_PRICE
-				FROM   TB_COUPON_REFVAL CR
-				INNER  JOIN GOODS_DATA GD
-				ON     GD.GOODS_CD = CR.REF_VAL
-				WHERE  1=1
-				AND    CR.CPN_TARGET = 'G260_10' -- 상품
-				AND    CR.DEL_YN = 'N'
-				UNION
-				SELECT CR.CPN_ID
-				     , GD.GOODS_CD
-				     , GD.CURR_PRICE
-				FROM   (
-					SELECT C4.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   TB_CATE_4SRCH C4
-					LEFT   OUTER JOIN (
-						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
-					ON     1=1
-					WHERE  1=1
-					AND    C4.SITE_CD = 'G000_10'
-					AND    C4.CATE_TYPE = 'G031_10'
-					ORDER  BY LEAF_CATE_NO
-					     , CATE_LVL
-				) C4SRCH
-				INNER  JOIN TB_COUPON_REFVAL CR
-				ON     C4SRCH.CATE_NO = CR.REF_VAL
-				INNER  JOIN TB_CATE_GOODS CG
-				ON     C4SRCH.LEAF_CATE_NO = CG.CATE_NO
-				INNER  JOIN GOODS_DATA GD
-				ON     CG.GOODS_CD = GD.GOODS_CD
-				WHERE  1=1
-				AND    C4SRCH.CATE_NO IS NOT NULL
-				AND    CR.CPN_TARGET = 'G260_11' -- 카테고리
-				AND    CR.DEL_YN = 'N'
-				UNION
-				SELECT CR1.CPN_ID
-				     , GD.GOODS_CD
-				     , GD.CURR_PRICE
-				FROM   GOODS_DATA GD
-				INNER  JOIN TB_COUPON_REFVAL CR1
-				ON     GD.BRAND_CD = CR1.REF_VAL
-				AND    CR1.CPN_TARGET = 'G260_12' -- 브랜드
-				AND    CR1.DEL_YN = 'N'
-				INNER  JOIN TB_COUPON_REFVAL CR2
-				ON     GD.SUPPLY_COMP_CD = CR2.REF_VAL
-				AND    CR2.CPN_TARGET = 'G260_13' -- 공급업체
-				AND    CR2.DEL_YN = 'N'
-			) X
-			LEFT   OUTER JOIN TB_COUPON_REFVAL CR
-			ON     X.CPN_ID = CR.CPN_ID
-			AND    X.GOODS_CD = CR.REF_VAL
-			AND    CR.CPN_TARGET = 'G260_14' -- 쿠폰제외상품
-			AND    CR.DEL_YN = 'N'
-			LEFT   OUTER JOIN TB_COUPON_BAN_GOODS CBG -- 전체제외상품
-			ON     X.GOODS_CD = CBG.GOODS_CD
-			AND    CBG.DEL_YN = 'N'
-			WHERE  1=1
-			AND    CR.CPN_ID IS NULL
-			AND    CBG.CPN_BAN_GOODS_SQ IS NULL
-		) Z
-		ON     Z.CPN_ID = CP.CPN_ID
-		WHERE  1=1
-		AND    CP.SITE_CD = 'G000_10' -- 자사몰
-		AND    CP.CPN_TYPE = 'G230_10' -- 즉시할인
-		AND    CP.DOWN_STDT < CURRENT_TIMESTAMP
-		AND    CP.DOWN_EDDT > CURRENT_TIMESTAMP
-		ORDER  BY (CASE WHEN I_FRONT_GB IN ('P') THEN CP.DC_PVAL
-		                WHEN I_FRONT_GB IN ('M') THEN CP.DC_MVAL
-		                WHEN I_FRONT_GB IN ('A') THEN CP.DC_AVAL
-		                END) DESC
-	) Y
-	LIMIT   1
-	;
+    WITH GOODS_DATA AS (
+        SELECT G.GOODS_CD
+             , G.CURR_PRICE
+             , G.BRAND_CD
+             , G.SUPPLY_COMP_CD
+        FROM   TB_GOODS G
+        WHERE  1=1
+        AND    G.GOODS_CD = I_GOODS_CD
+    )
+    SELECT Y.CPN_ID
+    INTO   O_RET_VALUE
+    FROM (
+        SELECT CP.CPN_ID
+             , I_FRONT_GB AS FRONT_GB
+             , CASE WHEN CP.DC_WAY IN ('G240_11')
+                    THEN CASE WHEN CP.MAX_DC_AMT > (Z.CURR_PRICE * CP.DC_PVAL) / 100
+                              THEN (Z.CURR_PRICE * CP.DC_PVAL) / 100
+                              ELSE CP.MAX_DC_AMT
+                              END
+                    ELSE CP.DC_PVAL
+                    END  DC_PVAL
+             , CASE WHEN CP.DC_WAY IN ('G240_11')
+                    THEN CASE WHEN CP.MAX_DC_AMT > (Z.CURR_PRICE * CP.DC_MVAL) / 100
+                              THEN (Z.CURR_PRICE * CP.DC_MVAL) / 100
+                              ELSE CP.MAX_DC_AMT
+                              END
+                    ELSE CP.DC_MVAL
+                    END  DC_MVAL
+             , CASE WHEN CP.DC_WAY IN ('G240_11')
+                    THEN CASE WHEN CP.MAX_DC_AMT > (Z.CURR_PRICE * CP.DC_AVAL) / 100
+                              THEN (Z.CURR_PRICE * CP.DC_AVAL) / 100
+                              ELSE CP.MAX_DC_AMT
+                              END
+                    ELSE CP.DC_AVAL
+                    END  DC_AVAL
+        FROM   TB_COUPON CP
+        INNER  JOIN TB_COUPON_CUST_GBN CGB
+        ON     CP.CPN_ID = CGB.CPN_ID
+        AND    CGB.USABLE_CUST_GB IN ('G100_10') -- 일반회원
+        INNER  JOIN (
+            SELECT X.*
+            FROM (
+                SELECT CR.CPN_ID
+                     , GD.GOODS_CD
+                     , GD.CURR_PRICE
+                FROM   TB_COUPON_REFVAL CR
+                INNER  JOIN GOODS_DATA GD
+                ON     GD.GOODS_CD = CR.REF_VAL
+                WHERE  1=1
+                AND    CR.CPN_TARGET = 'G260_10' -- 상품
+                AND    CR.DEL_YN = 'N'
+                UNION
+                SELECT CR.CPN_ID
+                     , GD.GOODS_CD
+                     , GD.CURR_PRICE
+                FROM   (
+                    SELECT C4.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   TB_CATE_4SRCH C4
+                    LEFT   OUTER JOIN (
+                        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
+                    ON     1=1
+                    WHERE  1=1
+                    AND    C4.SITE_CD = 'G000_10'
+                    AND    C4.CATE_TYPE = 'G031_10'
+                    ORDER  BY LEAF_CATE_NO
+                         , CATE_LVL
+                ) C4SRCH
+                INNER  JOIN TB_COUPON_REFVAL CR
+                ON     C4SRCH.CATE_NO = CR.REF_VAL
+                INNER  JOIN TB_CATE_GOODS CG
+                ON     C4SRCH.LEAF_CATE_NO = CG.CATE_NO
+                INNER  JOIN GOODS_DATA GD
+                ON     CG.GOODS_CD = GD.GOODS_CD
+                WHERE  1=1
+                AND    C4SRCH.CATE_NO IS NOT NULL
+                AND    CR.CPN_TARGET = 'G260_11' -- 카테고리
+                AND    CR.DEL_YN = 'N'
+                UNION
+                SELECT CR1.CPN_ID
+                     , GD.GOODS_CD
+                     , GD.CURR_PRICE
+                FROM   GOODS_DATA GD
+                INNER  JOIN TB_COUPON_REFVAL CR1
+                ON     GD.BRAND_CD = CR1.REF_VAL
+                AND    CR1.CPN_TARGET = 'G260_12' -- 브랜드
+                AND    CR1.DEL_YN = 'N'
+                UNION
+                SELECT CR2.CPN_ID
+                     , GD.GOODS_CD
+                     , GD.CURR_PRICE
+                FROM   GOODS_DATA GD
+                INNER  JOIN TB_COUPON_REFVAL CR2
+                ON     GD.SUPPLY_COMP_CD = CR2.REF_VAL
+                AND    CR2.CPN_TARGET = 'G260_13' -- 공급업체
+                AND    CR2.DEL_YN = 'N'
+            ) X
+            LEFT   OUTER JOIN TB_COUPON_REFVAL CR
+            ON     X.CPN_ID = CR.CPN_ID
+            AND    X.GOODS_CD = CR.REF_VAL
+            AND    CR.CPN_TARGET = 'G260_14' -- 쿠폰제외상품
+            AND    CR.DEL_YN = 'N'
+            LEFT   OUTER JOIN TB_COUPON_BAN_GOODS CBG -- 전체제외상품
+            ON     X.GOODS_CD = CBG.GOODS_CD
+            AND    CBG.DEL_YN = 'N'
+            WHERE  1=1
+            AND    CR.CPN_ID IS NULL
+            AND    CBG.CPN_BAN_GOODS_SQ IS NULL
+        ) Z
+        ON     Z.CPN_ID = CP.CPN_ID
+        WHERE  1=1
+        AND    CP.SITE_CD = 'G000_10' -- 자사몰
+        AND    CP.CPN_TYPE = 'G230_10' -- 즉시할인
+        AND    CP.CPN_STAT = 'G232_11' -- 진행중
+        AND    CP.AVAIL_STDT < CURRENT_TIMESTAMP
+        AND    CP.AVAIL_EDDT > CURRENT_TIMESTAMP
+        ORDER  BY (CASE WHEN I_FRONT_GB IN ('P') THEN CP.DC_PVAL
+                        WHEN I_FRONT_GB IN ('M') THEN CP.DC_MVAL
+                        WHEN I_FRONT_GB IN ('A') THEN CP.DC_AVAL
+                        END) DESC
+    ) Y
+    LIMIT   1
+    ;
 
-	RETURN O_RET_VALUE;
+    RETURN O_RET_VALUE;
 END

+ 155 - 152
산출물/3.설계/05.DB-Object/03.db_function/FN_GET_APPLY_CPN1_PRICE.sql

@@ -1,159 +1,162 @@
 CREATE DEFINER=`style`@`%` FUNCTION `style`.`FN_GET_APPLY_CPN1_PRICE`(I_GOODS_CD varchar(50), I_FRONT_GB char) RETURNS int
 BEGIN
-	DECLARE O_RET_VALUE INT;
-	DECLARE O_CURR_PRICE INT;
-	DECLARE O_DC_VAL INT;
+    DECLARE O_RET_VALUE INT;
+    DECLARE O_CURR_PRICE INT;
+    DECLARE O_DC_VAL INT;
 
-	SET O_RET_VALUE = 0;
-	SET O_DC_VAL = 0;
+    SET O_RET_VALUE = 0;
+    SET O_DC_VAL = 0;
 
-	SELECT CURR_PRICE
-	INTO   O_CURR_PRICE -- 상품금액
-	FROM   TB_GOODS
-	WHERE  GOODS_CD = I_GOODS_CD
-	;
+    SELECT CURR_PRICE
+    INTO   O_CURR_PRICE -- 상품금액
+    FROM   TB_GOODS
+    WHERE  GOODS_CD = I_GOODS_CD
+    ;
 
-	WITH GOODS_DATA AS (
-		SELECT G.GOODS_CD
-		     , G.CURR_PRICE
-		     , G.BRAND_CD
-		     , G.SUPPLY_COMP_CD
-		FROM   TB_GOODS G
-		WHERE  1=1
-		AND    G.GOODS_CD = I_GOODS_CD
-	)
-	SELECT CASE WHEN Y.FRONT_GB IN ('P') THEN Y.DC_PVAL
-	            WHEN Y.FRONT_GB IN ('M') THEN Y.DC_MVAL
-	            WHEN Y.FRONT_GB IN ('A') THEN Y.DC_AVAL
-	            END
-	INTO   O_DC_VAL
-	FROM (
-		SELECT CP.CPN_ID
-		     , I_FRONT_GB AS FRONT_GB
-		     , CASE WHEN CP.DC_WAY IN ('G240_11')
-		            THEN (Z.CURR_PRICE * CP.DC_PVAL) / 100
-		            ELSE CP.DC_PVAL
-		            END  DC_PVAL
-		     , CASE WHEN CP.DC_WAY IN ('G240_11')
-		            THEN (Z.CURR_PRICE * CP.DC_MVAL) / 100
-		            ELSE CP.DC_MVAL
-		            END  DC_MVAL
-		     , CASE WHEN CP.DC_WAY IN ('G240_11')
-		            THEN (Z.CURR_PRICE * CP.DC_AVAL) / 100
-		            ELSE CP.DC_AVAL
-		            END  DC_AVAL
-		FROM   TB_COUPON CP
-		INNER  JOIN TB_COUPON_CUST_GBN CGB
-		ON     CP.CPN_ID = CGB.CPN_ID
-		AND    CGB.USABLE_CUST_GB IN ('G100_10') -- 일반회원
-		INNER  JOIN TB_COUPON_CUST_GRADE CGR
-		ON     CP.CPN_ID = CGR.CPN_ID
-		AND    CGR.USABLE_CUST_GRADE IN ('G110_10', 'G110_20', 'G110_30', 'G110_40', 'G110_50') -- 전체등급
-		INNER  JOIN (
-			SELECT X.*
-			FROM (
-				SELECT CR.CPN_ID
-				     , GD.GOODS_CD
-				     , GD.CURR_PRICE
-				FROM   TB_COUPON_REFVAL CR
-				INNER  JOIN GOODS_DATA GD
-				ON     GD.GOODS_CD = CR.REF_VAL
-				WHERE  1=1
-				AND    CR.CPN_TARGET = 'G260_10' -- 상품
-				AND    CR.DEL_YN = 'N'
-				UNION
-				SELECT CR.CPN_ID
-				     , GD.GOODS_CD
-				     , GD.CURR_PRICE
-				FROM   (
-					SELECT C4.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   TB_CATE_4SRCH C4
-					LEFT   OUTER JOIN (
-						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
-					ON     1=1
-					WHERE  1=1
-					AND    C4.SITE_CD = 'G000_10'
-					AND    C4.CATE_TYPE = 'G031_10'
-					ORDER  BY LEAF_CATE_NO
-					     , CATE_LVL
-				) C4SRCH
-				INNER  JOIN TB_COUPON_REFVAL CR
-				ON     C4SRCH.CATE_NO = CR.REF_VAL
-				INNER  JOIN TB_CATE_GOODS CG
-				ON     C4SRCH.LEAF_CATE_NO = CG.CATE_NO
-				INNER  JOIN GOODS_DATA GD
-				ON     CG.GOODS_CD = GD.GOODS_CD
-				WHERE  1=1
-				AND    C4SRCH.CATE_NO IS NOT NULL
-				AND    CR.CPN_TARGET = 'G260_11' -- 카테고리
-				AND    CR.DEL_YN = 'N'
-				UNION
-				SELECT CR1.CPN_ID
-				     , GD.GOODS_CD
-				     , GD.CURR_PRICE
-				FROM   GOODS_DATA GD
-				INNER  JOIN TB_COUPON_REFVAL CR1
-				ON     GD.BRAND_CD = CR1.REF_VAL
-				AND    CR1.CPN_TARGET = 'G260_12' -- 브랜드
-				AND    CR1.DEL_YN = 'N'
-				INNER  JOIN TB_COUPON_REFVAL CR2
-				ON     GD.SUPPLY_COMP_CD = CR2.REF_VAL
-				AND    CR2.CPN_TARGET = 'G260_13' -- 공급업체
-				AND    CR2.DEL_YN = 'N'
-			) X
-			LEFT   OUTER JOIN TB_COUPON_REFVAL CR
-			ON     X.CPN_ID = CR.CPN_ID
-			AND    X.GOODS_CD = CR.REF_VAL
-			AND    CR.CPN_TARGET = 'G260_14' -- 쿠폰제외상품
-			AND    CR.DEL_YN = 'N'
-			LEFT   OUTER JOIN TB_COUPON_BAN_GOODS CBG -- 전체제외상품
-			ON     X.GOODS_CD = CBG.GOODS_CD
-			AND    CBG.DEL_YN = 'N'
-			WHERE  1=1
-			AND    CR.CPN_ID IS NULL
-			AND    CBG.CPN_BAN_GOODS_SQ IS NULL
-		) Z
-		ON     Z.CPN_ID = CP.CPN_ID
-		WHERE  1=1
-		AND    CP.SITE_CD = 'G000_10' -- 자사몰
-		AND    CP.CPN_TYPE = 'G230_10' -- 즉시할인
-		AND    CP.DOWN_STDT < CURRENT_TIMESTAMP
-		AND    CP.DOWN_EDDT > CURRENT_TIMESTAMP
-		ORDER  BY (CASE WHEN I_FRONT_GB IN ('P') THEN CP.DC_PVAL
-		                WHEN I_FRONT_GB IN ('M') THEN CP.DC_MVAL
-		                WHEN I_FRONT_GB IN ('A') THEN CP.DC_AVAL
-		                END) DESC
-	) Y
-	LIMIT   1
-	;
-	
-	IF O_CURR_PRICE > O_DC_VAL THEN
-		SET O_RET_VALUE = O_CURR_PRICE - O_DC_VAL;	
-	ELSE
-		SET O_RET_VALUE = 0;
-	END IF
-	;
+    WITH GOODS_DATA AS (
+        SELECT G.GOODS_CD
+             , G.CURR_PRICE
+             , G.BRAND_CD
+             , G.SUPPLY_COMP_CD
+        FROM   TB_GOODS G
+        WHERE  1=1
+        AND    G.GOODS_CD = I_GOODS_CD
+    )
+    SELECT CASE WHEN Y.FRONT_GB IN ('P') THEN Y.DC_PVAL
+                WHEN Y.FRONT_GB IN ('M') THEN Y.DC_MVAL
+                WHEN Y.FRONT_GB IN ('A') THEN Y.DC_AVAL
+                END
+    INTO   O_DC_VAL
+    FROM (
+        SELECT CP.CPN_ID
+             , I_FRONT_GB AS FRONT_GB
+             , CASE WHEN CP.DC_WAY IN ('G240_11')
+                    THEN (Z.CURR_PRICE * CP.DC_PVAL) / 100
+                    ELSE CP.DC_PVAL
+                    END  DC_PVAL
+             , CASE WHEN CP.DC_WAY IN ('G240_11')
+                    THEN (Z.CURR_PRICE * CP.DC_MVAL) / 100
+                    ELSE CP.DC_MVAL
+                    END  DC_MVAL
+             , CASE WHEN CP.DC_WAY IN ('G240_11')
+                    THEN (Z.CURR_PRICE * CP.DC_AVAL) / 100
+                    ELSE CP.DC_AVAL
+                    END  DC_AVAL
+        FROM   TB_COUPON CP
+        INNER  JOIN TB_COUPON_CUST_GBN CGB
+        ON     CP.CPN_ID = CGB.CPN_ID
+        AND    CGB.USABLE_CUST_GB IN ('G100_10') -- 일반회원
+        INNER  JOIN (
+            SELECT X.*
+            FROM (
+                SELECT CR.CPN_ID
+                     , GD.GOODS_CD
+                     , GD.CURR_PRICE
+                FROM   TB_COUPON_REFVAL CR
+                INNER  JOIN GOODS_DATA GD
+                ON     GD.GOODS_CD = CR.REF_VAL
+                WHERE  1=1
+                AND    CR.CPN_TARGET = 'G260_10' -- 상품
+                AND    CR.DEL_YN = 'N'
+                UNION
+                SELECT CR.CPN_ID
+                     , GD.GOODS_CD
+                     , GD.CURR_PRICE
+                FROM   (
+                    SELECT C4.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   TB_CATE_4SRCH C4
+                    LEFT   OUTER JOIN (
+                        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
+                    ON     1=1
+                    WHERE  1=1
+                    AND    C4.SITE_CD = 'G000_10'
+                    AND    C4.CATE_TYPE = 'G031_10'
+                    ORDER  BY LEAF_CATE_NO
+                         , CATE_LVL
+                ) C4SRCH
+                INNER  JOIN TB_COUPON_REFVAL CR
+                ON     C4SRCH.CATE_NO = CR.REF_VAL
+                INNER  JOIN TB_CATE_GOODS CG
+                ON     C4SRCH.LEAF_CATE_NO = CG.CATE_NO
+                INNER  JOIN GOODS_DATA GD
+                ON     CG.GOODS_CD = GD.GOODS_CD
+                WHERE  1=1
+                AND    C4SRCH.CATE_NO IS NOT NULL
+                AND    CR.CPN_TARGET = 'G260_11' -- 카테고리
+                AND    CR.DEL_YN = 'N'
+                UNION
+                SELECT CR1.CPN_ID
+                     , GD.GOODS_CD
+                     , GD.CURR_PRICE
+                FROM   GOODS_DATA GD
+                INNER  JOIN TB_COUPON_REFVAL CR1
+                ON     GD.BRAND_CD = CR1.REF_VAL
+                AND    CR1.CPN_TARGET = 'G260_12' -- 브랜드
+                AND    CR1.DEL_YN = 'N'
+                UNION
+                SELECT CR2.CPN_ID
+                     , GD.GOODS_CD
+                     , GD.CURR_PRICE
+                FROM   GOODS_DATA GD
+                INNER  JOIN TB_COUPON_REFVAL CR2
+                ON     GD.SUPPLY_COMP_CD = CR2.REF_VAL
+                AND    CR2.CPN_TARGET = 'G260_13' -- 공급업체
+                AND    CR2.DEL_YN = 'N'
+            ) X
+            LEFT   OUTER JOIN TB_COUPON_REFVAL CR
+            ON     X.CPN_ID = CR.CPN_ID
+            AND    X.GOODS_CD = CR.REF_VAL
+            AND    CR.CPN_TARGET = 'G260_14' -- 쿠폰제외상품
+            AND    CR.DEL_YN = 'N'
+            LEFT   OUTER JOIN TB_COUPON_BAN_GOODS CBG -- 전체제외상품
+            ON     X.GOODS_CD = CBG.GOODS_CD
+            AND    CBG.DEL_YN = 'N'
+            WHERE  1=1
+            AND    CR.CPN_ID IS NULL
+            AND    CBG.CPN_BAN_GOODS_SQ IS NULL
+        ) Z
+        ON     Z.CPN_ID = CP.CPN_ID
+        WHERE  1=1
+        AND    CP.SITE_CD = 'G000_10' -- 자사몰
+        AND    CP.CPN_TYPE = 'G230_10' -- 즉시할인
+        AND    CP.CPN_STAT = 'G232_11'
+        AND    CP.AVAIL_STDT < CURRENT_TIMESTAMP
+        AND    CP.AVAIL_EDDT > CURRENT_TIMESTAMP
+        ORDER  BY (CASE WHEN I_FRONT_GB IN ('P') THEN CP.DC_PVAL
+                        WHEN I_FRONT_GB IN ('M') THEN CP.DC_MVAL
+                        WHEN I_FRONT_GB IN ('A') THEN CP.DC_AVAL
+                        END) DESC
+    ) Y
+    LIMIT   1
+    ;
+    
+    IF O_CURR_PRICE > O_DC_VAL THEN
+        SET O_RET_VALUE = O_CURR_PRICE - O_DC_VAL;  
+    ELSE
+        SET O_RET_VALUE = 0;
+    END IF
+    ;
 
-	RETURN O_RET_VALUE;
+    RETURN O_RET_VALUE;
 END

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

@@ -3696,7 +3696,25 @@ INSERT INTO TB_COMMON_CODE VALUES ('G322','33','도서/외곽지역','도서/외
 INSERT INTO TB_COMMON_CODE VALUES ('G322','42','특판잔류','특판잔류','Y',42,7,					now(),7,now());
 INSERT INTO TB_COMMON_CODE VALUES ('G322','55','결재불가','결재불가','Y',55,7,					now(),7,now());
 INSERT INTO TB_COMMON_CODE VALUES ('G322','56','배달전취소','배달전취소','Y',56,7,				now(),7,now());
-	 
+
+# G325 WMS사유코드
+INSERT INTO TB_COMMON_CODE VALUES ('ROOT','G325','WMS사유코드','WMS사유코드','Y',325,7,				now(),7,now());	 
+INSERT INTO TB_COMMON_CODE VALUES ('G325','00','타택배착불','타택배착불','Y',1,7,						now(),7,now());
+INSERT INTO TB_COMMON_CODE VALUES ('G325','01','반품 미접수','반품 미접수','Y',2,7,					now(),7,now());
+INSERT INTO TB_COMMON_CODE VALUES ('G325','02','미착','미착','Y',3,7,								now(),7,now());
+INSERT INTO TB_COMMON_CODE VALUES ('G325','03','과착','과착','Y',4,7,								now(),7,now());
+INSERT INTO TB_COMMON_CODE VALUES ('G325','04','배송비 미동봉','배송비 미동봉','Y',5,7,				now(),7,now());
+INSERT INTO TB_COMMON_CODE VALUES ('G325','05','다른상품 반품','다른상품 반품','Y',6,7,				now(),7,now());
+INSERT INTO TB_COMMON_CODE VALUES ('G325','06','배송비 일부동봉','배송비 일부동봉','Y',7,7,				now(),7,now());
+INSERT INTO TB_COMMON_CODE VALUES ('G325','07','맞교환','맞교환','Y',8,7,							now(),7,now());
+INSERT INTO TB_COMMON_CODE VALUES ('G325','08','확정 전 품절(재고없음)','확정 전 품절(재고없음)','Y',9,7,	now(),7,now());
+INSERT INTO TB_COMMON_CODE VALUES ('G325','09','확정 후 품절','확정 후 품절','Y',10,7,				now(),7,now());
+INSERT INTO TB_COMMON_CODE VALUES ('G325','10','확정 전 불량','확정 전 불량','Y',11,7,				now(),7,now());
+INSERT INTO TB_COMMON_CODE VALUES ('G325','11','확정 후 불량','확정 후 불량','Y',12,7,				now(),7,now());
+INSERT INTO TB_COMMON_CODE VALUES ('G325','12','확정 전 이미지틀림','확정 전 이미지틀림','Y',13,7,		now(),7,now());
+INSERT INTO TB_COMMON_CODE VALUES ('G325','13','확정 후 이미지틀림','확정 후 이미지틀림','Y',14,7,		now(),7,now());
+INSERT INTO TB_COMMON_CODE VALUES ('G325','15','기타(메모없음, 메모이상 등)','기타(메모없음, 메모이상 등)','Y',16,7,	now(),7,now());
+
 
 	 
 UPDATE TB_COMMON_CODE SET DISP_ORD = DISP_ORD-1 WHERE CD_GB = 'G941';
@@ -4839,21 +4857,24 @@ INSERT INTO TB_MENU VALUES ('B1008', 'B10', '룩북관리', 'P', '/display/lookb
 INSERT INTO TB_MENU VALUES ('B1009', 'B10', '동영상관리', 'P', '/display/video/form', NULL, 1009, 'Y', 1, NOW(), 1, NOW());
 INSERT INTO TB_MENU VALUES ('B1010', 'B10', '인스타그램관리', 'P', '/display/instagram/form', NULL, 1010, 'Y', 1, NOW(), 1, NOW());
 
-INSERT INTO TB_MENU VALUES ('C', 'ROOT', '주문/배송', 'M', NULL, NULL, 3, 'Y', 1, NOW(), 1, NOW());
-INSERT INTO TB_MENU VALUES ('C10', 'C', '주문관리', 'M', NULL, NULL, 10, 'Y', 1, NOW(), 1, NOW());
-INSERT INTO TB_MENU VALUES ('C1001', 'C10', '주문목록', 'P', '/order/list/form', NULL, 1001, 'Y', 1, NOW(), 1, NOW());
-INSERT INTO TB_MENU VALUES ('C1002', 'C10', '제휴몰주문가격확인', 'P', '/order/extmall/price/confirm/form', NULL, 1002, 'Y', 1, NOW(), 1, NOW());
-INSERT INTO TB_MENU VALUES ('C1003', 'C10', '입점미발주목록', 'P', '/order/seller/unorder/list/form', NULL, 1003, 'Y', 1, NOW(), 1, NOW());
-INSERT INTO TB_MENU VALUES ('C1004', 'C10', 'PG승인대사', 'P', '/order/pg/tradel/form', NULL, 1004, 'Y', 1, NOW(), 1, NOW());
-INSERT INTO TB_MENU VALUES ('C20', 'C', '배송관리', 'M', NULL, NULL, 20, 'Y', 1, NOW(), 1, NOW());
-INSERT INTO TB_MENU VALUES ('C2001', 'C20', '출고금지상품관리', 'P', '/delivery/ban/goods/form', NULL, 2001, 'Y', 1, NOW(), 1, NOW());
-INSERT INTO TB_MENU VALUES ('C2002', 'C20', '출고처지정관리', 'P', '/delivery/assign/form', NULL, 2002, 'Y', 1, NOW(), 1, NOW());
-INSERT INTO TB_MENU VALUES ('C2003', 'C20', '배송메모', 'P', '/delivery/memo/form', NULL, 2003, 'N', 1, NOW(), 1, NOW());
-INSERT INTO TB_MENU VALUES ('C2004', 'C20', '배송목록', 'P', '/delivery/list/form', NULL, 2004, 'Y', 1, NOW(), 1, NOW());
+INSERT INTO TB_MENU VALUES ('C', 'ROOT',    '주문/배송',       'M', NULL, NULL, 3, 'Y', 1, NOW(), 1, NOW());
+INSERT INTO TB_MENU VALUES ('C10',   'C',   '주문관리',        'M', NULL, NULL, 10, 'Y', 1, NOW(), 1, NOW());
+INSERT INTO TB_MENU VALUES ('C1001', 'C10', '주문목록',        'P', '/order/list/form', 					NULL, 1001, 'Y', 1, NOW(), 1, NOW());
+INSERT INTO TB_MENU VALUES ('C1002', 'C10', '제휴몰주문가격확인', 'P', '/order/extmall/price/confirm/form', 	NULL, 1002, 'Y', 1, NOW(), 1, NOW());
+INSERT INTO TB_MENU VALUES ('C1003', 'C10', '입점미발주목록',    'P', '/order/seller/unorder/list/form', 	NULL, 1003, 'Y', 1, NOW(), 1, NOW());
+INSERT INTO TB_MENU VALUES ('C1004', 'C10', 'PG승인대사',      'P', '/order/pg/tradel/form', 		 NULL, 1004, 'Y', 1, NOW(), 1, NOW());
+INSERT INTO TB_MENU VALUES ('C20',   'C',   '배송관리',        'M', NULL, 	NULL, 20, 'Y', 1, NOW(), 1, NOW());
+INSERT INTO TB_MENU VALUES ('C2001', 'C20', '출고금지상품관리',  'P', '/delivery/ban/goods/form', 	 NULL, 2001, 'Y', 1, NOW(), 1, NOW());
+INSERT INTO TB_MENU VALUES ('C2002', 'C20', '출고처지정관리',    'P', '/delivery/assign/form', 		 NULL, 2002, 'Y', 1, NOW(), 1, NOW());
+INSERT INTO TB_MENU VALUES ('C2003', 'C20', '배송메모', 'P',   '/delivery/memo/form', 				 NULL, 2003, 'N', 1, NOW(), 1, NOW());
+INSERT INTO TB_MENU VALUES ('C2004', 'C20', '배송목록', 'P',   '/delivery/list/form', 				 NULL, 2004, 'Y', 1, NOW(), 1, NOW());
 INSERT INTO TB_MENU VALUES ('C2005', 'C20', '배송/회수지시목록', 'P', '/delivery/dwdirect/list/form', NULL, 2005, 'Y', 1, NOW(), 1, NOW());
-INSERT INTO TB_MENU VALUES ('C30', 'C', '회수관리', 'M', NULL, NULL, 30, 'Y', 1, NOW(), 1, NOW());
-INSERT INTO TB_MENU VALUES ('C3001', 'C30', '회수등록', 'P', '/withdraw/register/form', NULL, 3001, 'Y', 1, NOW(), 1, NOW());
-INSERT INTO TB_MENU VALUES ('C3002', 'C30', '회수컨펌', 'P', '/withdraw/confirm/form', NULL, 3002, 'Y', 1, NOW(), 1, NOW());
+INSERT INTO TB_MENU VALUES ('C30',   'C',   '회수관리',        'M', NULL, NULL, 30, 'Y', 1, NOW(), 1, NOW());
+INSERT INTO TB_MENU VALUES ('C3001', 'C30', '회수등록',        'P', '/withdraw/register/form',		 NULL, 3001, 'N', 1, NOW(), 1, NOW());
+INSERT INTO TB_MENU VALUES ('C3002', 'C30', '환불컨펌',        'P', '/withdraw/refund/form', 		 NULL, 3005, 'Y', 1, NOW(), 1, NOW());
+INSERT INTO TB_MENU VALUES ('C3003', 'C30', 'WMS회수목록',     'P','/withdraw/wms/list/form',      NULL,3003,'Y',1,NOW(),1,NOW());
+INSERT INTO TB_MENU VALUES ('C3004', 'C30', 'WMS회수예외관리',  'P','/withdraw/exception/form',     NULL,3004,'Y',1,NOW(),1,NOW());
+INSERT INTO TB_MENU VALUES ('C3005', 'C30', '회수지시목록',     'P','/withdraw/directive/form',     NULL,3000,'Y',1,NOW(),1,NOW());
 
 INSERT INTO TB_MENU VALUES ('D', 'ROOT', '회원/마케팅', 'M', NULL, NULL, 4, 'Y', 1, NOW(), 1, NOW());
 INSERT INTO TB_MENU VALUES ('D10', 'D', '회원관리', 'M', NULL, NULL, 10, 'Y', 1, NOW(), 1, NOW());
@@ -4968,7 +4989,7 @@ CREATE TABLE TB_MENU_ACCESS_HST
   MENU_ACCESS_SQ INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '메뉴접속일련번호',
   USER_NO        INT UNSIGNED NOT NULL COMMENT '사용자번호(사용자)',
   MENU_ID        VARCHAR(20) NOT NULL COMMENT '메뉴ID(메뉴)',
-  REQ_URL        VARCHAR(500) COMMENT '요청URL',
+  REQ_URL        VARCHAR(4000) COMMENT '요청URL',
   PARAMS         LONGTEXT COMMENT '파라미터',
   REG_NO         INT UNSIGNED NOT NULL COMMENT '등록자번호',
   REG_DT         TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '등록일시',
@@ -7309,6 +7330,8 @@ CREATE TABLE TB_AD_KEYWORD_GOODS (
   DISP_ORD       TINYINT UNSIGNED  NOT NULL DEFAULT 1 COMMENT '표시순서', -- 표시순서
   REG_NO         INT UNSIGNED      NOT NULL COMMENT '등록자번호', -- 등록자번호
   REG_DT         TIMESTAMP         NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '등록일시', -- 등록일시
+  UPD_NO           INT UNSIGNED NOT NULL COMMENT '수정자번호', -- 수정자번호
+  UPD_DT           TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '수정일시', -- 수정일시
   PRIMARY KEY (AD_KEYWORD_SQ, GOODS_CD),
   INDEX IX_AD_KEYWORD_GOODS_01 (GOODS_CD)
 )
@@ -12261,73 +12284,55 @@ ALTER TABLE TB_CART_DETAIL
 # 장바구니이력
 ################################################################################
 DROP TABLE IF EXISTS TB_CART_HST RESTRICT;
-CREATE TABLE TB_CART_HST (
-  CART_DTL_SQ  INT UNSIGNED NOT NULL COMMENT '장바구니이력일련번호', -- 장바구니이력일련번호
-  CART_GB      VARCHAR(20)  NOT NULL COMMENT '장바구니구분(공통코드G026)', -- 장바구니구분(공통코드G026)
-  GOODS_CD     VARCHAR(20)  NOT NULL COMMENT '상품코드', -- 상품코드
-  GOODS_QTY    SMALLINT     NOT NULL DEFAULT 0 COMMENT '수량',
-  DEAL_GOODS_CD VARCHAR(20) NULL COMMENT '딜상품코드',
-  ORD_NO       INT UNSIGNED NOT NULL COMMENT '주문번호', -- 주문번호
-  CUST_NO      INT UNSIGNED NULL     COMMENT '고객번호', -- 고객번호
-  AF_LINK_CD   VARCHAR(20)  NULL     COMMENT '제휴링크코드', -- 제휴링크코드
-  ITHR_CD      VARCHAR(20)  NULL     COMMENT '유입경로(공통코드G027)', -- 유입경로(공통코드G027)
-  CONTENTS_LOC VARCHAR(20)  NULL     COMMENT '컨텐츠위치(공통코드G028)', -- 컨텐츠위치(공통코드G028)
-  PLAN_DTL_SQ  INT UNSIGNED NULL     COMMENT '기획전상세번호', -- 기획전상세번호
-  REG_NO       INT UNSIGNED NOT NULL COMMENT '등록자번호', -- 등록자번호
-  REG_DT       TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '등록일시' -- 등록일시
-)
-COMMENT '장바구니이력. 결제완료 시 장바구니 이력 생성에 의한 발생';
-
--- 장바구니이력
-ALTER TABLE TB_CART_HST
-  ADD CONSTRAINT PK_CART_HST -- 장바구니이력 기본키
-    PRIMARY KEY (
-      CART_DTL_SQ -- 장바구니이력일련번호
-    );
-
--- 장바구니이력 인덱스
-CREATE INDEX IX_CART_HST_01
-  ON TB_CART_HST( -- 장바구니이력
-    CUST_NO ASC -- 고객번호
-  );
-
--- 장바구니이력 인덱스2
-CREATE INDEX IX_CART_HST_02
-  ON TB_CART_HST( -- 장바구니이력
-    ORD_NO ASC -- 주문번호
-  );
-
-ALTER TABLE TB_CART_HST
-  MODIFY COLUMN CART_DTL_SQ INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '장바구니이력일련번호';
-
-ALTER TABLE TB_CART_HST
-  AUTO_INCREMENT = 1;
+CREATE TABLE TB_CART_HST
+(
+    CART_SQ       int unsigned                        null comment '장바구니이력일련번호',
+    CART_GB       varchar(20)                         not null comment '장바구니구분(공통코드G026)',
+    GOODS_CD      varchar(20)                         not null comment '상품코드',
+    PRODUCT_NO    int unsigned                        null comment 'ProductNo(WMS)',
+    PRODUCT_CODE  varchar(50)                         null comment 'ProductCode(WMS)',
+    GOODS_QTY     smallint  default 0                 not null comment '수량',
+    DEAL_GOODS_CD varchar(20)                         null comment '딜상품코드',
+    ORD_NO        int unsigned                        not null comment '주문번호',
+    CUST_NO       int unsigned                        null comment '고객번호',
+    AF_LINK_CD    varchar(20)                         null comment '제휴링크코드',
+    ITHR_CD       varchar(20)                         null comment '유입경로(공통코드G027)',
+    CONTENTS_LOC  varchar(20)                         null comment '컨텐츠위치(공통코드G028)',
+    PLAN_DTL_SQ   int unsigned                        null comment '기획전상세번호',
+    REG_NO        int unsigned                        not null comment '등록자번호',
+    REG_DT        timestamp default CURRENT_TIMESTAMP not null comment '등록일시'
+)
+    comment '장바구니이력. 결제완료 시 장바구니 이력 생성에 의한 발생';
+
+create index IX_CART_HST_01
+    on tb_cart_hst (CUST_NO);
+
+create index IX_CART_HST_02
+    on tb_cart_hst (ORD_NO);
 
 ################################################################################
 # 장바구니상세이력
 ################################################################################
 DROP TABLE IF EXISTS TB_CART_DETAIL_HST RESTRICT;
-CREATE TABLE TB_CART_DETAIL_HST (
-  CART_DTL_SQ INT UNSIGNED      NOT NULL COMMENT '장바구니이력일련번호', -- 장바구니이력일련번호
-  ITEM_CD     VARCHAR(20)       NOT NULL COMMENT '단품코드(상품). 일반상품과 딜상품은 상품코드와 동일', -- 단품코드
-  OPT_CD      VARCHAR(200)      NOT NULL COMMENT '옵션코드', -- 옵션코드
-  OPT_CD1     VARCHAR(200)      NULL     COMMENT '옵션코드1', -- 옵션코드1
-  OPT_CD2     VARCHAR(200)      NULL     COMMENT '옵션코드2', -- 옵션코드2
-  SKU_MODEL_NO   VARCHAR(50)       NULL COMMENT 'SKUModelNo(WMS)',
-  PRODUCT_NO     INT UNSIGNED      NULL COMMENT 'ProductNo(WMS)',
-  PRODUCT_CODE   VARCHAR(50)       NULL COMMENT 'ProductCode(WMS)',
-  ITEM_QTY    SMALLINT UNSIGNED NOT NULL COMMENT '단품수량', -- 단품수량
-  REG_NO      INT UNSIGNED      NOT NULL COMMENT '등록자번호', -- 등록자번호
-  REG_DT      TIMESTAMP         NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '등록일시' -- 등록일시
+CREATE TABLE TB_CART_DETAIL_HST
+(
+    CART_DTL_SQ  int unsigned                        not null comment '장바구니이력일련번호',
+    CART_SQ      int unsigned                        not null comment '장바구니일련번호',
+    ITEM_CD      varchar(20)                         not null comment '단품코드(상품). 일반상품과 딜상품은 상품코드와 동일',
+    OPT_CD       varchar(200)                        not null comment '옵션코드',
+    OPT_CD1      varchar(200)                        null comment '옵션코드1',
+    OPT_CD2      varchar(200)                        null comment '옵션코드2',
+    SKU_MODEL_NO varchar(50)                         null comment 'SKUModelNo(WMS)',
+    PRODUCT_NO   int unsigned                        null comment 'ProductNo(WMS)',
+    PRODUCT_CODE varchar(50)                         null comment 'ProductCode(WMS)',
+    ITEM_QTY     smallint unsigned                   not null comment '단품수량',
+    REG_NO       int unsigned                        not null comment '등록자번호',
+    REG_DT       timestamp default CURRENT_TIMESTAMP not null comment '등록일시'
 )
-COMMENT '장바구니상세이. 결제완료 시 장바구니 이력 생성에 의한 발생';
+    comment '장바구니상세이. 결제완료 시 장바구니 이력 생성에 의한 발생';
 
--- 장바구니상세이력 인덱스
-CREATE INDEX IX_CART_DETAIL_HST_01
-  ON TB_CART_DETAIL_HST( -- 장바구니상세이력
-    CART_DTL_SQ ASC, -- 장바구니이력일련번호
-    ITEM_CD ASC      -- 단품코드
-  );
+create index IX_CART_DETAIL_HST_01
+    on tb_cart_detail_hst (CART_DTL_SQ, ITEM_CD);
 
 ################################################################################
 # 카테고리 1
@@ -14513,6 +14518,12 @@ ALTER TABLE TB_COUPON_AF_CHANNEL
       CPN_ID,    -- 쿠폰ID
       AF_LINK_CD  -- 제휴채널(공통코드G053)
     );
+    
+-- 쿠폰이용가능유입채널 인덱스
+CREATE INDEX IX_COUPON_AF_CHANNEL_01
+  ON TB_COUPON_AF_CHANNEL( 
+    AF_LINK_CD ASC 
+  );
 
 ################################################################################
 # 다다익선
@@ -14996,7 +15007,7 @@ ALTER TABLE TB_ORD_FREEGIFT_VAL
 DROP TABLE IF EXISTS TB_ORD_FREEGIFT_DTL RESTRICT;
 CREATE TABLE TB_ORD_FREEGIFT_DTL (
   ORD_FREEGIFT_DTL_SQ INT UNSIGNED NOT NULL COMMENT '주문사은품상세일련번호', -- 주문사은품상세일련번호
-  ORD_FREEGIFT_VAL_SQ INT UNSIGNED NOT NULL COMMENT '주문사은품혜택일련번호', -- 주문사은품혜택일련번호
+  ORD_FREEGIFT_SQ     INT          NOT NULL COMMENT '주문사은품마스터번호', -- 주문사은품마스터번호
   FREEGIFT_SQ         INT UNSIGNED NOT NULL COMMENT '사은품프로모션일련번호', -- 사은품프로모션일련번호
   ORD_NO              INT UNSIGNED NOT NULL COMMENT '주문번호', -- 주문번호
   ORD_DTL_NO          INT UNSIGNED NOT NULL COMMENT '주문상세번호 (상세번호가 취소 될때 마다 사은품 회수 계획)', -- 주문상세번호
@@ -15018,7 +15029,7 @@ ALTER TABLE TB_ORD_FREEGIFT_DTL
 -- 주문사은품상세 인덱스
 CREATE INDEX IX_ORD_FREEGIFT_DTL_01
   ON TB_ORD_FREEGIFT_DTL( -- 주문사은품상세
-    ORD_FREEGIFT_VAL_SQ ASC -- 주문사은품혜택일련번호
+    ORD_FREEGIFT_SQ -- 주문사은품혜택일련번호
   );
 
 -- 주문사은품상세 인덱스2
@@ -15028,11 +15039,12 @@ CREATE INDEX IX_ORD_FREEGIFT_DTL_02
   );
 
 -- 주문사은품상세 인덱스3
-CREATE INDEX IX_ORD_FREEGIFT_DTL_03
-  ON TB_ORD_FREEGIFT_DTL( -- 주문사은품상세
-    ORD_NO ASC,     -- 주문번호
-    ORD_DTL_NO ASC  -- 주문상세번호
-  );
+CREATE INDEX IX_TB_ORD_FREEGIFT_DTL_03
+    ON TB_ORD_FREEGIFT_DTL (ORD_NO);
+
+-- 주문사은품상세 인덱스4
+CREATE INDEX IX_TB_ORD_FREEGIFT_DTL_04
+    ON TB_ORD_FREEGIFT_DTL (ORD_DTL_NO);
 
 ALTER TABLE TB_ORD_FREEGIFT_DTL
   MODIFY COLUMN ORD_FREEGIFT_DTL_SQ INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '주문사은품상세일련번호';
@@ -15307,7 +15319,11 @@ CREATE TABLE TB_ORDER_RECALL_EXCEPTION
 	DATE_CREATED TIMESTAMP NULL COMMENT '생성일자',
 	USER_ID_MODIFIED VARCHAR(50) NULL COMMENT '수정자ID',
 	USER_NAME_MODIFIED VARCHAR(50) NULL COMMENT '수정자명',
-	DATE_LAST_MODIFIED TIMESTAMP NULL COMMENT '수정일자'
+	DATE_LAST_MODIFIED TIMESTAMP NULL COMMENT '수정일자',
+	CS_ADD_FEE INT NULL COMMENT '추가비용',
+	CS_MEMO VARCHAR(2000) NULL COMMENT 'C/S메모',
+	REG_NO INT UNSIGNED NOT NULL COMMENT '등록자NO',
+	REG_DT TIMESTAMP NOT NULL COMMENT '등록일시'	
 )
 COMMENT '회수예외 (WMS에서 검수시 예외케이스 IF_TB에 생성)';
 
@@ -15337,7 +15353,11 @@ CREATE TABLE TB_ORDER_RECALL_EXCEPTION_ITEM
 	SKU_CODE VARCHAR(50) NULL COMMENT '옵션코드',
 	SKU_VALUE VARCHAR(100) NULL COMMENT '옵션내용',
 	EXCEPTION_QTY INT NULL COMMENT '예외수량',
-	REASON_CD VARCHAR(100) NULL COMMENT '예외사유'
+	REASON_CD VARCHAR(100) NULL COMMENT '예외사유',
+	QTY INT UNSIGNED NULL COMMENT '주문수량',
+	REASON_CODE VARCHAR(20) NULL COMMENT '사유코드G325',
+	REG_NO INT UNSIGNED NOT NULL COMMENT '등록자NO',
+	REG_DT TIMESTAMP NOT NULL COMMENT '등록일시'	
 )
 COMMENT '회수예외 상세  (WMS에서 검수시 예외케이스 IF_TB에 생성)';
 
@@ -15360,7 +15380,9 @@ CREATE TABLE TB_ORDER_RECALL_EXCEPTION_MEMO
 	ADMIN_MEMO VARCHAR(2000) NULL COMMENT '메모내용',
 	USER_ID_CREATED VARCHAR(50) NULL COMMENT '생성자ID',
 	USER_NAME_CREATED VARCHAR(50) NULL COMMENT '생성자명',
-	DATE_CREATED TIMESTAMP NOT NULL COMMENT '생성일'
+	DATE_CREATED TIMESTAMP NOT NULL COMMENT '생성일',
+	REG_NO INT UNSIGNED NOT NULL COMMENT '등록자NO',
+	REG_DT TIMESTAMP NOT NULL COMMENT '등록일시'		
 )
 COMMENT '회수예외 메모 (WMS에서 검수시 예외케이스 IF_TB에 생성)';
 
@@ -15392,24 +15414,30 @@ DROP TABLE IF EXISTS AUTOMAIL_INTERFACE RESTRICT;
 CREATE TABLE AUTOMAIL_INTERFACE
 (
     AUTOCODE    INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '자동메일코드',
-    LEGACYID    VARCHAR(200) COMMENT '회원ID',
+    LEGACYID    VARCHAR(30) DEFAULT '-' NOT NULL COMMENT '회원ID',
     AUTOTYPE    VARCHAR(3) NOT NULL COMMENT '자동메일타입',
     EMAIL       VARCHAR(100) NOT NULL COMMENT '이메일',
     NAME        VARCHAR(100) COMMENT '이름',
     INSERTDATE  DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '입력일시',
-    SENDTIME    DATETIME NULL COMMENT '전송일시',
+    SENDTIME    DATETIME NULL COMMENT '예약전송일시',
     OPENTIME    DATETIME NULL COMMENT '오픈일시',
     SENTTIME    DATETIME NULL COMMENT '전송완료일시',
     SENDYN      CHAR(1) DEFAULT 'N' NOT NULL COMMENT '전송여부',
     CMPNCODE    INT UNSIGNED COMMENT '캠페인코드',
-    FROMADDRESS VARCHAR(100) COMMENT '보내는주소',
-    FROMNAME    VARCHAR(100) COMMENT '보내는',
+    FROMADDRESS VARCHAR(100) COMMENT '보내는사람메일주소',
+    FROMNAME    VARCHAR(100) COMMENT '보내는사람이름',
     TITLE       VARCHAR(200) COMMENT '메일제목',
     CONTENT     LONGTEXT NOT NULL COMMENT '메일내용',
     TAG1        VARCHAR(100) COMMENT 'TAG1',
     TAG2        VARCHAR(100) COMMENT 'TAG2',
     TAG3        VARCHAR(100) COMMENT 'TAG3',
     TAG4        VARCHAR(100) COMMENT 'TAG4',
+    TAG5        VARCHAR(100) COMMENT 'TAG5',
+    TAG6        VARCHAR(100) COMMENT 'TAG6',
+    TAG7        VARCHAR(100) COMMENT 'TAG7',
+    TAG8        VARCHAR(100) COMMENT 'TAG8',
+    TAG9        VARCHAR(100) COMMENT 'TAG9',
+    TAG10       VARCHAR(100) COMMENT 'TAG10',
     PRIMARY KEY (AUTOCODE)
 ) DEFAULT CHARSET=euckr COLLATE=euckr_korean_ci COMMENT='자동메일I/F. 메일 등록에 의한 발생. 데이터 적재 시 넷퍼시에서 자동으로 메일 발송함'
 ;
@@ -15489,3 +15517,117 @@ CREATE INDEX IX_VW_STOCK_01
   ON VW_STOCK( -- 옵션
     OPT_CD1 ASC -- 옵션명1
   );
+
+################################################################################
+# 상품권대량등록
+################################################################################
+CREATE TABLE TB_GFCD_BULK_REG (
+   GFCD_BULK_REG_SQ INT UNSIGNED AUTO_INCREMENT COMMENT '대량등록일련번호' PRIMARY KEY
+ , CUST_ID          VARCHAR(30)                            NOT NULL COMMENT '고객ID'
+ , GFCD_NO          VARCHAR(50)                            NOT NULL COMMENT '상품권번호'
+ , GFCD_API_HST_SQ  INT                                    NULL COMMENT '상품권API이력일련번호'
+ , RESULT_MSG       VARCHAR(50)                            NULL COMMENT  '결과메시지'
+ , REG_NO           INT UNSIGNED                           NOT NULL COMMENT '등록자번호'
+ , REG_DT           TIMESTAMP    DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '등록일시'
+ , UPD_NO           INT UNSIGNED                           NOT NULL COMMENT '수정자번호'
+ , UPD_DT           TIMESTAMP    DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '수정일시'
+)
+COMMENT '상품권대량. 어드민 상품권대량 업로드 시 발생'
+;
+CREATE INDEX IX_GFCD_BULK_REG_01 ON TB_GFCD_BULK_REG (REG_DT);
+
+################################################################################
+# 최근본상품
+################################################################################
+DROP TABLE IF EXISTS TB_RECENTLY_GOODDS RESTRICT;
+CREATE TABLE TB_RECENTLY_GOODDS (
+  RGOODS_SQ    INT UNSIGNED AUTO_INCREMENT COMMENT '최근본상품일련번호',
+  GOODS_CD     VARCHAR(20) NOT NULL COMMENT '상품코드(상품)',
+  JSESSION_ID  VARCHAR(200) COMMENT 'J세션ID',
+  CUST_NO      INT UNSIGNED COMMENT '고객번호(고객)',
+  REG_DT       TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '등록일시',
+  UPD_DT       TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '수정일시',
+  PRIMARY KEY (RGOODS_SQ),
+  INDEX IX_RECENTLY_GOODS_01 (JSESSION_ID, GOODS_CD),
+  INDEX IX_RECENTLY_GOODS_02 (CUST_NO, GOODS_CD)
+)
+COMMENT '최근본상품. 로그인 시 쿠키에 저장된 최근본상품을 등록하거나 고객이 상품상세 유입 시 해당상품 등록에 의한 발생'
+;
+
+################################################################################
+# 재고체크 임시 테이블
+################################################################################
+CREATE TABLE TB_DELIVERY_LOC_TMP
+(
+    USE_GB            VARCHAR(10)   NOT NULL COMMENT '사용구분',
+    DELV_LOC_CD       VARCHAR(20)   NOT NULL COMMENT '출고처코드',
+    DELV_ASSIGN_ORD   INT           NULL COMMENT '출고처지정순서',
+    LOC_QTY           INT           NULL COMMENT '재고수량',
+    GOODS_LOC_CNT     INT           NULL COMMENT '상품 카운트',
+    GOODS_LOC_SET_CNT INT           NULL COMMENT '세트상품 카운트',
+    ORD_DTL_NO_LIST   VARCHAR(2000) NULL COMMENT '주문상세번호리스트',
+    PRIMARY KEY (USE_GB, DELV_LOC_CD)
+)
+COMMENT '재고체크 임시 테이블';
+
+################################################################################
+# 회수
+################################################################################
+CREATE TABLE TB_WITHDRAW
+(
+    WD_INVOICE_NO    VARCHAR(20)      NOT NULL COMMENT '회수송장번호',
+    ORD_CHG_SQ       INT UNSIGNED     NOT NULL COMMENT '주문변경번호',
+    SENDER_NM        VARCHAR(50)      NULL COMMENT '발송자명',
+    SENDER_PHNNO     VARCHAR(20)      NULL COMMENT '발송자휴대전화번호',
+    SENDER_TELNO     VARCHAR(20)      NULL COMMENT '발송자전화번호',
+    SENDER_POST_NO   VARCHAR(6)       NULL COMMENT '발송자우편번호',
+    SENDER_BASE_ADDR VARCHAR(300)     NULL COMMENT '발송자기본주소',
+    SENDER_DTL_ADDR  VARCHAR(200)     NULL COMMENT '발송자상세주소',
+    SHIP_COMP_CD     VARCHAR(20)      NULL COMMENT '배송업체코드(배송업체)',
+    WD_REQ_REASON    VARCHAR(20)      NULL COMMENT '회수요청사유(공통코드)',
+    WD_FEE           INT  DEFAULT 0   NULL COMMENT '회수비',
+    COD_FEE          INT  DEFAULT 0   NULL COMMENT '착불비',
+    ENCLOSE_FEE      INT  DEFAULT 0   NULL COMMENT '동봉비',
+    WD_MEMO          VARCHAR(1000)    NULL COMMENT '회수메모',
+    SAME_YN          CHAR DEFAULT 'N' NOT NULL COMMENT '동일여부',
+    ARRIVAL_DT       TIMESTAMP        NULL COMMENT '도착일시',
+    CS_MEMO          VARCHAR(1000)    NULL COMMENT 'CS메모',
+    CS_OB_YN         CHAR DEFAULT 'N' NOT NULL COMMENT 'CS아웃바운드여부',
+    CS_OB_DT         TIMESTAMP        NULL COMMENT 'CS아웃바운드일시',
+    CS_OB_ID         INT UNSIGNED     NULL COMMENT 'CS아웃바운드ID(사용자)',
+    SMS_SEND_YN      CHAR DEFAULT 'N' NOT NULL COMMENT 'SMS발송여부',
+    REG_NO           INT UNSIGNED     NOT NULL COMMENT '등록자NO',
+    REG_DT           TIMESTAMP        NOT NULL COMMENT '등록일시',
+    UPD_NO           INT UNSIGNED     NOT NULL COMMENT '수정자NO',
+    UPD_DT           TIMESTAMP        NOT NULL COMMENT '수정일시',
+    PRIMARY KEY (WD_INVOICE_NO, ORD_CHG_SQ)
+)
+COMMENT '회수. 교환 및 반품건의 실물 회수 완료에 의한 발생';
+
+
+################################################################################
+# 회수 상세 
+################################################################################
+CREATE TABLE TB_WITHDRAW_DETAIL
+(
+    WD_INVOICE_NO VARCHAR(20)  NOT NULL COMMENT '회수송장번호',
+    ORD_CHG_SQ    INT UNSIGNED NOT NULL COMMENT '주문변경번호',
+    GOODS_CD      VARCHAR(20)  NOT NULL COMMENT '상품코드',
+    OPT_CD1       VARCHAR(20)  NOT NULL COMMENT '옵션코드1(컬러)',
+    OPT_CD2       VARCHAR(20)  NOT NULL COMMENT '옵션코드2(사이즈)',
+    ORD_DTL_NO    INT UNSIGNED NOT NULL COMMENT '주문상세번호',
+    WD_QTY        INT          NULL COMMENT '회수수량',
+    RTN_LOC_CD    VARCHAR(20)  NULL COMMENT '반품처코드(반품처)',
+    SELL_STORE_CD VARCHAR(20)  NULL COMMENT '판매매장코드(판매매장)',
+    REG_NO        INT UNSIGNED NOT NULL COMMENT '등록자NO',
+    REG_DT        TIMESTAMP    NOT NULL COMMENT '등록일시',
+    UPD_NO        INT UNSIGNED NOT NULL COMMENT '수정자NO',
+    UPD_DT        TIMESTAMP    NOT NULL COMMENT '수정일시',
+    PRIMARY KEY (WD_INVOICE_NO, ORD_CHG_SQ, GOODS_CD, OPT_CD1, OPT_CD2)
+)
+COMMENT '회수상세. 교환 및 반품건의 실물 회수 완료에 의한 발생';
+
+CREATE INDEX TB_WITHDRAW_DETAIL_ORD_DTL_NO_IDX
+    ON TB_WITHDRAW_DETAIL (ORD_DTL_NO, WD_INVOICE_NO, GOODS_CD, OPT_CD1, OPT_CD2);
+
+

+ 14 - 0
산출물/4.구축/데이터처리/03.전시카테고리생성(TB_CATE_4SRCH).sql

@@ -687,6 +687,7 @@ VALUES
 
 INSERT INTO TB_CATE2 (CATE2_NO,CATE2_NM,SITE_CD,CATE_GB,CATE1_NO,CATE_TYPE,LEAF_YN,DISP_ORD,FORMAL_GB,CONTENTS_LOC,DISP_YN,USE_YN,REG_NO,REG_DT,UPD_NO,UPD_DT)
 VALUES
+<<<<<<< HEAD
 	 (2001,'신상품','G000_10','G032_101',1100,'G031_20','Y',2001,'G009_10','SCM001','Y','Y',12,NOW(),12,NOW()),
 	 (2002,'베스트','G000_10','G032_101',1100,'G031_20','Y',2002,'G009_10','SCM002','Y','Y',12,NOW(),12,NOW()),
 	 (2003,'신상품','G000_10','G032_101',1200,'G031_20','Y',2003,'G009_10','SCM001','Y','Y',12,NOW(),12,NOW()),
@@ -698,6 +699,19 @@ VALUES
 	 (2009,'신상품','G000_10','G032_101',1600,'G031_20','Y',2009,'G009_10','SCM001','Y','Y',12,NOW(),12,NOW()),
 	 (2010,'베스트','G000_10','G032_101',1600,'G031_20','Y',2010,'G009_10','SCM002','Y','Y',12,NOW(),12,NOW()),
 	 (1701,'기획전','G000_10','G032_101',1700,'G031_20','Y',1701,'G009_10','SMM002','Y','Y',12,NOW(),12,NOW()),
+=======
+	 (2001,'신상품','G000_10','G032_101',1100,'G031_20','Y',2001,'G009_10','SCM002','Y','Y',12,NOW(),12,NOW()),
+	 (2002,'베스트','G000_10','G032_101',1100,'G031_20','Y',2002,'G009_10','SCM003','Y','Y',12,NOW(),12,NOW()),
+	 (2003,'신상품','G000_10','G032_101',1200,'G031_20','Y',2003,'G009_10','SCM002','Y','Y',12,NOW(),12,NOW()),
+	 (2004,'베스트','G000_10','G032_101',1200,'G031_20','Y',2004,'G009_10','SCM003','Y','Y',12,NOW(),12,NOW()),
+	 (2005,'신상품','G000_10','G032_101',1300,'G031_20','Y',2005,'G009_10','SCM002','Y','Y',12,NOW(),12,NOW()),
+	 (2006,'베스트','G000_10','G032_101',1300,'G031_20','Y',2006,'G009_10','SCM003','Y','Y',12,NOW(),12,NOW()),
+	 (2007,'신상품','G000_10','G032_101',1500,'G031_20','Y',2007,'G009_10','SCM002','Y','Y',12,NOW(),12,NOW()),
+	 (2008,'베스트','G000_10','G032_101',1500,'G031_20','Y',2008,'G009_10','SCM003','Y','Y',12,NOW(),12,NOW()),
+	 (2009,'신상품','G000_10','G032_101',1600,'G031_20','Y',2009,'G009_10','SCM002','Y','Y',12,NOW(),12,NOW()),
+	 (2010,'베스트','G000_10','G032_101',1600,'G031_20','Y',2010,'G009_10','SCM003','Y','Y',12,NOW(),12,NOW()),
+	 (1701,'기획전','G000_10','G032_101',1700,'G031_20','Y',1701,'G009_10','SMM002','Y','Y',12,NOW(),12,NOW()),	 
+>>>>>>> 36c0e11aa64be8eb9cfeadd164695ed68dfe22f3
 	 (1702,'신상품','G000_10','G032_101',1700,'G031_20','Y',1702,'G009_10','SMM003','Y','Y',12,NOW(),12,NOW()),
 	 (1703,'베스트타이틀','G000_10','G032_101',1700,'G031_20','Y',1703,'G009_10','SMM004','Y','Y',12,NOW(),12,NOW()),
 	 (1704,'핫딜','G000_10','G032_101',1700,'G031_20','Y',1704,'G009_10','SMM006','Y','Y',12,NOW(),12,NOW()),

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

@@ -15,7 +15,7 @@ INSERT INTO TB_CATE_FILTER_TMP (
 WITH TAB_FILTER AS (
     SELECT C4.SITE_CD
          , C4.CATE_GB
-         , C4.FORMAL_GB
+         , G.FORMAL_GB
          , CG.BRAND_GROUP_NO
          , C4.CATE1_NO
          , C4.CATE2_NO
@@ -144,7 +144,7 @@ INSERT INTO TB_CATE_FILTER_TMP (
 WITH TAB_FILTER AS (
     SELECT C4.SITE_CD
          , C4.CATE_GB
-         , C4.FORMAL_GB
+         , G.FORMAL_GB
          , CG.BRAND_GROUP_NO
          , C4.CATE1_NO
          , C4.CATE2_NO
@@ -276,7 +276,7 @@ INSERT INTO TB_CATE_FILTER_TMP (
 WITH TAB_FILTER AS (
     SELECT C4.SITE_CD
          , C4.CATE_GB
-         , C4.FORMAL_GB
+         , G.FORMAL_GB
          , CG.BRAND_GROUP_NO
          , C4.CATE1_NO
          , C4.CATE2_NO
@@ -433,7 +433,8 @@ WITH TAB_FILTER AS (
             GROUP  BY SITE_CD, CATE_GB, FORMAL_GB, BRAND_GROUP_NO, CATE5_NO
            ) Z
 )
-SELECT SITE_CD
+SELECT DISTINCT
+       SITE_CD
      , CATE_GB
      , FORMAL_GB
      , BRAND_GROUP_NO
@@ -442,7 +443,7 @@ SELECT SITE_CD
      , FILTER_CD
      , FILTER_NM
      , RANK() OVER(PARTITION BY SITE_CD, CATE_GB, FORMAL_GB, BRAND_GROUP_NO, CATE_NO
-                   ORDER BY DISP_ORD
+                   ORDER BY FILTER_CD
                    )  AS DISP_ORD
 FROM   (
         SELECT SITE_CD
@@ -452,7 +453,6 @@ FROM   (
              , CATE_NO
              , PRICE1         AS FILTER_CD
              , PRICE1         AS FILTER_NM
-             , 1              AS DISP_ORD
         FROM   TAB_PRICE
         UNION ALL
         SELECT SITE_CD
@@ -462,7 +462,6 @@ FROM   (
              , CATE_NO
              , PRICE2         AS FILTER_CD
              , PRICE2         AS FILTER_NM
-             , 2              AS DISP_ORD
         FROM   TAB_PRICE
         UNION ALL
         SELECT SITE_CD
@@ -472,7 +471,6 @@ FROM   (
              , CATE_NO
              , PRICE3         AS FILTER_CD
              , PRICE3         AS FILTER_NM
-             , 3              AS DISP_ORD
         FROM   TAB_PRICE
         UNION ALL
         SELECT SITE_CD
@@ -482,7 +480,6 @@ FROM   (
              , CATE_NO
              , PRICE4         AS FILTER_CD
              , PRICE4         AS FILTER_NM
-             , 4              AS DISP_ORD
         FROM   TAB_PRICE
         UNION ALL
         SELECT SITE_CD
@@ -492,7 +489,6 @@ FROM   (
              , CATE_NO
              , PRICE5         AS FILTER_CD
              , PRICE5         AS FILTER_NM
-             , 5              AS DISP_ORD
         FROM   TAB_PRICE
         UNION ALL
         SELECT SITE_CD
@@ -502,7 +498,6 @@ FROM   (
              , CATE_NO
              , PRICE6         AS FILTER_CD
              , PRICE6         AS FILTER_NM
-             , 6              AS DISP_ORD
         FROM   TAB_PRICE
        ) Z
 ;
@@ -522,7 +517,7 @@ INSERT INTO TB_CATE_FILTER_TMP (
 WITH TAB_FILTER AS (
     SELECT C4.SITE_CD
          , C4.CATE_GB
-         , C4.FORMAL_GB
+         , G.FORMAL_GB
          , CG.BRAND_GROUP_NO
          , C4.CATE1_NO
          , C4.CATE2_NO
@@ -642,7 +637,7 @@ INSERT INTO TB_CATE_FILTER_TMP (
 WITH TAB_FILTER AS (
     SELECT C4.SITE_CD
          , C4.CATE_GB
-         , C4.FORMAL_GB
+         , G.FORMAL_GB
          , CG.BRAND_GROUP_NO
          , C4.CATE1_NO
          , C4.CATE2_NO
@@ -761,7 +756,7 @@ INSERT INTO TB_CATE_FILTER_TMP (
 WITH TAB_FILTER AS (
     SELECT C4.SITE_CD
          , C4.CATE_GB
-         , C4.FORMAL_GB
+         , G.FORMAL_GB
          , CG.BRAND_GROUP_NO
          , C4.CATE1_NO
          , C4.CATE2_NO
@@ -886,7 +881,7 @@ INSERT INTO TB_CATE_FILTER_TMP (
 WITH TAB_FILTER AS (
     SELECT C4.SITE_CD
          , C4.CATE_GB
-         , C4.FORMAL_GB
+         , G.FORMAL_GB
          , CG.BRAND_GROUP_NO
          , C4.CATE1_NO
          , C4.CATE2_NO

+ 877 - 0
산출물/4.구축/데이터처리/10.카테고리필터생성_브랜드별(TB_CATE_FILTER).sql

@@ -0,0 +1,877 @@
+TRUNCATE TABLE TB_CATE_FILTER_TMP;
+
+-- 사이즈 필터 생성
+INSERT INTO TB_CATE_FILTER_TMP (
+       SITE_CD
+     , CATE_GB
+     , FORMAL_GB
+     , BRAND_GROUP_NO
+     , CATE_NO
+     , FILTER_GB
+     , FILTER_CD
+     , FILTER_NM
+     , DISP_ORD
+)
+WITH TAB_FILTER AS (
+    SELECT C4.SITE_CD
+         , C4.CATE_GB
+         , G.FORMAL_GB
+         , B.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
+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 TB_CATE_FILTER_TMP (
+       SITE_CD
+     , CATE_GB
+     , FORMAL_GB
+     , BRAND_GROUP_NO
+     , CATE_NO
+     , FILTER_GB
+     , FILTER_CD
+     , FILTER_NM
+     , DISP_ORD
+)
+WITH TAB_FILTER AS (
+    SELECT C4.SITE_CD
+         , C4.CATE_GB
+         , G.FORMAL_GB
+         , B.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, CATE2_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, CATE3_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, CATE4_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, CATE5_NO
+           ) Z
+)
+SELECT DISTINCT
+       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 FILTER_CD
+                   )  AS DISP_ORD
+FROM   (
+        SELECT SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE_NO
+             , PRICE1         AS FILTER_CD
+             , PRICE1         AS FILTER_NM
+        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
+        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
+        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
+        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
+        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
+        FROM   TAB_PRICE
+       ) Z
+;
+
+
+-- 연령대 필터 생성
+INSERT INTO TB_CATE_FILTER_TMP (
+       SITE_CD
+     , CATE_GB
+     , FORMAL_GB
+     , BRAND_GROUP_NO
+     , CATE_NO
+     , FILTER_GB
+     , FILTER_CD
+     , FILTER_NM
+     , DISP_ORD
+)
+WITH TAB_FILTER AS (
+    SELECT C4.SITE_CD
+         , C4.CATE_GB
+         , G.FORMAL_GB
+         , B.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
+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 TB_CATE_FILTER_TMP (
+       SITE_CD
+     , CATE_GB
+     , FORMAL_GB
+     , BRAND_GROUP_NO
+     , CATE_NO
+     , FILTER_GB
+     , FILTER_CD
+     , FILTER_NM
+     , DISP_ORD
+)
+WITH TAB_FILTER AS (
+    SELECT C4.SITE_CD
+         , C4.CATE_GB
+         , G.FORMAL_GB
+         , B.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
+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 TB_CATE_FILTER_TMP (
+       SITE_CD
+     , CATE_GB
+     , FORMAL_GB
+     , BRAND_GROUP_NO
+     , CATE_NO
+     , FILTER_GB
+     , FILTER_CD
+     , FILTER_NM
+     , DISP_ORD
+)
+WITH TAB_FILTER AS (
+    SELECT C4.SITE_CD
+         , C4.CATE_GB
+         , G.FORMAL_GB
+         , B.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
+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 TB_CATE_FILTER_TMP (
+       SITE_CD
+     , CATE_GB
+     , FORMAL_GB
+     , BRAND_GROUP_NO
+     , CATE_NO
+     , FILTER_GB
+     , FILTER_CD
+     , FILTER_NM
+     , DISP_ORD
+)
+WITH TAB_FILTER AS (
+    SELECT C4.SITE_CD
+         , C4.CATE_GB
+         , G.FORMAL_GB
+         , B.BRAND_GROUP_NO
+         , C4.CATE1_NO
+         , C4.CATE2_NO
+         , C4.CATE3_NO
+         , C4.CATE4_NO
+         , C4.CATE5_NO
+         , G.GOODS_CD
+         , GB.BENEFIT_GB
+    FROM   TB_CATE_4SRCH C4
+         , TB_CATE_GOODS CG
+         , TB_GOODS G
+         , TB_GOODS_STOCK GS
+         , TB_GOODS_BENEFIT GB
+         , 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 = GB.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 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 '신상'
+			WHEN FILTER_CD = '50' 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
+FROM   (
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE5_NO       AS CATE_NO
+             , BENEFIT_GB     AS FILTER_CD
+        FROM   TAB_FILTER
+        WHERE  CATE5_NO IS NOT NULL
+        UNION ALL
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE4_NO       AS CATE_NO
+             , BENEFIT_GB     AS FILTER_CD
+        FROM   TAB_FILTER
+        WHERE  CATE4_NO IS NOT NULL
+        UNION ALL
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE3_NO       AS CATE_NO
+             , BENEFIT_GB     AS FILTER_CD
+        FROM   TAB_FILTER
+        WHERE  CATE3_NO IS NOT NULL
+        UNION ALL
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE2_NO       AS CATE_NO
+             , BENEFIT_GB     AS FILTER_CD
+        FROM   TAB_FILTER
+        WHERE  CATE2_NO IS NOT NULL
+        UNION ALL
+        SELECT DISTINCT
+               SITE_CD
+             , CATE_GB
+             , FORMAL_GB
+             , BRAND_GROUP_NO
+             , CATE1_NO       AS CATE_NO
+             , BENEFIT_GB     AS FILTER_CD
+        FROM   TAB_FILTER
+        WHERE  CATE1_NO IS NOT NULL
+       ) Z
+;
+
+
+INSERT INTO TB_CATE_FILTER
+SELECT DISTINCT SITE_CD
+    , CATE_GB
+    , FORMAL_GB
+    , BRAND_GROUP_NO
+    , CATE_NO
+    , FILTER_GB
+    , FILTER_CD
+    , FILTER_NM
+    , DISP_ORD
+    , 12 AS REG_NO
+    , NOW() AS REG_DT
+FROM   TB_CATE_FILTER_TMP
+;