diff --git a/county/03 DM_TF_EXT_COUNTY_SALES.sql b/county/03 DM_TF_EXT_COUNTY_SALES.sql index ac6832a..4d4ca19 100644 --- a/county/03 DM_TF_EXT_COUNTY_SALES.sql +++ b/county/03 DM_TF_EXT_COUNTY_SALES.sql @@ -151,39 +151,6 @@ and province_name not in ('台湾','澳门','香港') -- COMMAND ---------- - -WITH original_sales AS ( - SELECT /*+ BROADCAST(T2,T3) */ - T1.YM AS YYYYMM, - T2.PROVINCE_CODE AS AUDIT_COD, - T3.IQVIA_PACK_CODE AS PACK_CODE, - T1.VALUE AS SALES_VALUE, - T1.TOTALUNIT AS SALES_UNIT, - T1.COUNTINGUNIT AS COUNTINGUNIT - FROM FACT_COUNTY_PREVIOUS AS T1 - LEFT JOIN DIM_PROVINCE AS T2 ON T1.PROVINCE_C = T2.PROVINCE_NAME - LEFT JOIN DIM_PACK_INFO AS T3 ON T1.PHCD = T3.PACK_COD -) - -SELECT - cy.YYYYMM, - cy.AUDIT_COD, - cy.PACK_CODE, - cy.SALES_VALUE, - cy.SALES_UNIT, - cy.COUNTINGUNIT, - -- 去年同期:YYYYMM 为 6 位整数,减 100 即同月上一年(如 202403 → 202303) - ly.SALES_VALUE AS SALES_VALUE_LY, - ly.SALES_UNIT AS SALES_UNIT_LY, - ly.COUNTINGUNIT AS COUNTINGUNIT_LY -FROM original_sales AS cy -LEFT JOIN original_sales AS ly - ON ly.YYYYMM = cy.YYYYMM - 100 -- 同月去年 - AND ly.AUDIT_COD = cy.AUDIT_COD - AND ly.PACK_CODE = cy.PACK_CODE - --- COMMAND ---------- - INSERT OVERWRITE TABLE DM.DM_TF_EXT_COUNTY_SALES ( YYYYMM, PACK_CODE, @@ -227,15 +194,16 @@ WITH original_sales AS ( T1.YM AS YYYYMM, T2.PROVINCE_CODE AS AUDIT_COD, T3.IQVIA_PACK_CODE AS PACK_COD, - T1.VALUE AS SALES_VALUE_CAL, - T1.TOTALUNIT AS SALES_UNIT_CAL, - T1.COUNTINGUNIT AS CONUTING_UNIT + SUM(T1.VALUE ) AS SALES_VALUE_CAL, + SUM(T1.TOTALUNIT ) AS SALES_UNIT_CAL, + SUM(T1.COUNTINGUNIT ) AS CONUTING_UNIT FROM FACT_COUNTY_PREVIOUS AS T1 LEFT JOIN DIM_PROVINCE AS T2 ON T1.PROVINCE_C = T2.PROVINCE_NAME LEFT JOIN DIM_PACK_INFO AS T3 ON T1.PHCD = T3.PACK_COD + GROUP BY T1.YM,T2.PROVINCE_CODE,T3.IQVIA_PACK_CODE ) -,formated_count_sales_table ( +,formated_count_sales_table_detail ( SELECT cy.YYYYMM, cy.AUDIT_COD, @@ -243,15 +211,41 @@ WITH original_sales AS ( cy.SALES_VALUE_CAL, cy.SALES_UNIT_CAL, cy.CONUTING_UNIT, - -- 去年同期:YYYYMM 为 6 位整数,减 100 即同月上一年(如 202403 → 202303) + 0 AS SALES_VALUE_CAL_LY, + 0 AS SALES_UNIT_CAL_LY, + 0 AS CONUTING_UNIT_LY + FROM original_sales AS cy + + union ALL + + SELECT + ly.YYYYMM+100 as YYYYMM, + ly.AUDIT_COD, + ly.PACK_COD, + 0 as SALES_VALUE_CAL, + 0 as SALES_UNIT_CAL, + 0 as CONUTING_UNIT, + -- 去年同期 ly.SALES_VALUE_CAL AS SALES_VALUE_CAL_LY, ly.SALES_UNIT_CAL AS SALES_UNIT_CAL_LY, ly.CONUTING_UNIT AS CONUTING_UNIT_LY -FROM original_sales AS cy -LEFT JOIN original_sales AS ly - ON ly.YYYYMM = cy.YYYYMM - 100 -- 同月去年 - AND ly.AUDIT_COD = cy.AUDIT_COD - AND ly.PACK_COD = cy.PACK_COD + FROM original_sales AS ly + WHERE ly.yyyymm+100 <= (select max( yyyymm ) from original_sales ) +) + +,formated_count_sales_table ( + SELECT + YYYYMM, + AUDIT_COD, + PACK_COD, + SUM(SALES_VALUE_CAL) AS SALES_VALUE_CAL, + SUM(SALES_UNIT_CAL) AS SALES_UNIT_CAL, + SUM(CONUTING_UNIT) AS CONUTING_UNIT, + SUM(SALES_VALUE_CAL_LY) AS SALES_VALUE_CAL_LY, + SUM(SALES_UNIT_CAL_LY) AS SALES_UNIT_CAL_LY, + SUM(CONUTING_UNIT_LY) AS CONUTING_UNIT_LY + FROM formated_count_sales_table_detail + GROUP BY 1,2,3 ) -- ════════════════════════════════════════════