Quellcode durchsuchen

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

eskim vor 5 Jahren
Ursprung
Commit
01cb5e8054

+ 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

+ 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