07.카테고리재고생성(TB_CATE_STOCK).sql 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. TRUNCATE TABLE TB_CATE_STOCK_TMP;
  2. INSERT INTO TB_CATE_STOCK_TMP
  3. SELECT B.SITE_CD
  4. , B.CATE1_NO
  5. , B.CATE2_NO
  6. , B.CATE3_NO
  7. , B.CATE4_NO
  8. , B.CATE5_NO
  9. , A.GOODS_CD
  10. , C.BRAND_GROUP_NO
  11. , C.FORMAL_GB
  12. , C.STOCK_QTY
  13. FROM TB_CATE_GOODS A
  14. , TB_CATE_4SRCH B
  15. , (
  16. SELECT G.GOODS_CD
  17. , B.BRAND_GROUP_NO
  18. , G.FORMAL_GB
  19. , SUM(S.CURR_STOCK_QTY - S.BASE_STOCK_QTY) AS STOCK_QTY
  20. FROM TB_GOODS G USE INDEX (IX_GOODS_11)
  21. , VW_STOCK S
  22. , TB_BRAND B
  23. WHERE G.GOODS_CD = S.GOODS_CD
  24. AND G.BRAND_CD = B.BRAND_CD
  25. AND G.GOODS_TYPE = 'G056_N' /*일반상품*/
  26. AND G.GOODS_STAT = 'G008_90' /*승인된상품*/
  27. AND G.SELF_MALL_YN = 'Y' /*자사몰에노출하는넘만*/
  28. AND NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*유효한판매기간*/
  29. AND S.SOLDOUT_YN = 'N' /*품절이아닌넘*/
  30. AND S.DISP_YN = 'Y' /*사이즈노출하는넘만*/
  31. AND S.CURR_STOCK_QTY - S.BASE_STOCK_QTY > 0 /*재고있는넘만*/
  32. GROUP BY G.GOODS_CD, B.BRAND_GROUP_NO, G.FORMAL_GB
  33. UNION ALL
  34. SELECT G.GOODS_CD
  35. , B.BRAND_GROUP_NO
  36. , G.FORMAL_GB
  37. , SUM(S.CURR_STOCK_QTY - S.BASE_STOCK_QTY) AS STOCK_QTY
  38. FROM TB_GOODS G USE INDEX (IX_GOODS_11)
  39. , TB_GOODS_COMPOSE GC
  40. , VW_STOCK S
  41. , TB_BRAND B
  42. WHERE G.GOODS_CD = GC.GOODS_CD
  43. AND GC.COMPS_GOODS_CD = S.GOODS_CD
  44. AND G.BRAND_CD = B.BRAND_CD
  45. AND G.GOODS_TYPE != 'G056_N' /*일반상품이 아닌넘*/
  46. AND G.GOODS_STAT = 'G008_90' /*승인된상품*/
  47. AND G.SELF_GOODS_YN = 'Y' /*자사상품만(세트상품과 딜상품은 자사상품만)*/
  48. AND G.SELF_MALL_YN = 'Y' /*자사몰에노출하는넘만*/
  49. AND NOW() BETWEEN G.SELL_STDT AND G.SELL_EDDT /*유효한판매기간*/
  50. AND GC.USE_YN = 'Y' /*사용하는구성상품*/
  51. AND S.SOLDOUT_YN = 'N' /*품절이아닌넘*/
  52. AND S.DISP_YN = 'Y' /*사이즈노출하는넘만*/
  53. AND S.CURR_STOCK_QTY - S.BASE_STOCK_QTY > 0 /*재고있는넘만*/
  54. GROUP BY G.GOODS_CD, B.BRAND_GROUP_NO, G.FORMAL_GB
  55. ) C
  56. WHERE A.GOODS_CD = C.GOODS_CD
  57. AND A.CATE_NO = B.LEAF_CATE_NO
  58. AND B.CATE_TYPE = 'G031_10' /*상품분류카테고리*/
  59. ;
  60. TRUNCATE TABLE TB_CATE_STOCK;
  61. INSERT INTO TB_CATE_STOCK (
  62. SITE_CD
  63. , CATE_NO
  64. , BRAND_GROUP_NO
  65. , FORMAL_GB
  66. , STOCK_QTY
  67. , GOODS_QTY
  68. , REG_NO
  69. , REG_DT
  70. )
  71. SELECT SITE_CD
  72. , CATE_NO
  73. , BRAND_GROUP_NO
  74. , FORMAL_GB
  75. , STOCK_QTY
  76. , GOODS_QTY
  77. , 0 AS REG_NO
  78. , NOW() AS REG_DT
  79. FROM (
  80. SELECT SITE_CD
  81. , CATE5_NO AS CATE_NO
  82. , BRAND_GROUP_NO
  83. , FORMAL_GB
  84. , SUM(STOCK_QTY) AS STOCK_QTY
  85. , COUNT(DISTINCT GOODS_CD) AS GOODS_QTY
  86. FROM TB_CATE_STOCK_TMP
  87. WHERE CATE5_NO IS NOT NULL
  88. GROUP BY SITE_CD, CATE5_NO, BRAND_GROUP_NO, FORMAL_GB
  89. HAVING SUM(STOCK_QTY) > 0
  90. UNION ALL
  91. SELECT SITE_CD
  92. , CATE4_NO AS CATE_NO
  93. , BRAND_GROUP_NO
  94. , FORMAL_GB
  95. , SUM(STOCK_QTY) AS STOCK_QTY
  96. , COUNT(DISTINCT GOODS_CD) AS GOODS_QTY
  97. FROM TB_CATE_STOCK_TMP
  98. WHERE CATE4_NO IS NOT NULL
  99. GROUP BY SITE_CD, CATE4_NO, BRAND_GROUP_NO, FORMAL_GB
  100. HAVING SUM(STOCK_QTY) > 0
  101. UNION ALL
  102. SELECT SITE_CD
  103. , CATE3_NO AS CATE_NO
  104. , BRAND_GROUP_NO
  105. , FORMAL_GB
  106. , SUM(STOCK_QTY) AS STOCK_QTY
  107. , COUNT(DISTINCT GOODS_CD) AS GOODS_QTY
  108. FROM TB_CATE_STOCK_TMP
  109. WHERE CATE3_NO IS NOT NULL
  110. GROUP BY SITE_CD, CATE3_NO, BRAND_GROUP_NO, FORMAL_GB
  111. HAVING SUM(STOCK_QTY) > 0
  112. UNION ALL
  113. SELECT SITE_CD
  114. , CATE2_NO AS CATE_NO
  115. , BRAND_GROUP_NO
  116. , FORMAL_GB
  117. , SUM(STOCK_QTY) AS STOCK_QTY
  118. , COUNT(DISTINCT GOODS_CD) AS GOODS_QTY
  119. FROM TB_CATE_STOCK_TMP
  120. WHERE CATE2_NO IS NOT NULL
  121. GROUP BY SITE_CD, CATE2_NO, BRAND_GROUP_NO, FORMAL_GB
  122. HAVING SUM(STOCK_QTY) > 0
  123. UNION ALL
  124. SELECT SITE_CD
  125. , CATE1_NO AS CATE_NO
  126. , BRAND_GROUP_NO
  127. , FORMAL_GB
  128. , SUM(STOCK_QTY) AS STOCK_QTY
  129. , COUNT(DISTINCT GOODS_CD) AS GOODS_QTY
  130. FROM TB_CATE_STOCK_TMP
  131. WHERE CATE1_NO IS NOT NULL
  132. GROUP BY SITE_CD, CATE1_NO, BRAND_GROUP_NO, FORMAL_GB
  133. HAVING SUM(STOCK_QTY) > 0
  134. ) Z
  135. WHERE CATE_NO IS NOT NULL
  136. ;
  137. SELECT * FROM TB_CATE_STOCK;