Files
MarketAnalysis-ETL/ORG/DM_TD_EXT_AIA_ORG.sql

1155 lines
44 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- Databricks notebook source
-- CREATE OR REPLACE TABLE DM.DM_TD_EXT_AIA_ORG (
-- REGION_CODE STRING,
-- REGION_NAME_EN STRING,
-- RSM_NAME STRING,
-- RC_CODE STRING,
-- RC_NAME_EN STRING,
-- RC_NAME STRING,
-- REGIONCENTER STRING,
-- AUDIT_COD STRING,
-- MARKET STRING,
-- BU_CATEGORY STRING,
-- BU_NAME_EN STRING,
-- SUB_BU_NAME STRING,
-- SUB_BU_CODE_AUTH STRING,
-- BU_CODE_AUTH STRING,
-- DATA_SOURCE STRING,
-- REGION_RATIO FLOAT,
-- TEAM STRING,
-- MR_TRTY_CODE STRING,
-- NSD_KCODE STRING,
-- NSD_NAME STRING,
-- RSD_KCODE STRING,
-- RSD_NAME STRING,
-- RSM_KCODE STRING,
-- DSM_KCODE STRING,
-- DSM_NAME STRING,
-- MR_KCODE STRING,
-- MR_NAME STRING)
-- USING delta
-- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_org';
-- COMMAND ----------
-- MAGIC %run ../../../Common/config
-- COMMAND ----------
-- MAGIC %python
-- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dim_product_wide`').createOrReplaceTempView('cdw_dwd_dim_product_wide')
-- COMMAND ----------
-- =============================================================================
-- CELL 1: 临时视图 dm_td_org_temp
-- 背景: 202601 起 EC BU 整体迁移至 Retail需对历史字段做统一转换
-- 避免下游 CTE 中重复写 CASE WHEN。
-- 修改时间: 20260130
-- =============================================================================
-- COMMAND ----------
CREATE OR REPLACE TEMPORARY VIEW dm_td_org_temp AS
SELECT
org_key,
mr_trty_tag,
district_code,
district_name,
rc_name,
region_name,
REGION_CODE,
rc_code,
bu_category,
rsm_kcode,
rsm_name,
rsd_kcode,
rsd_name,
mr_kcode,
mr_name,
dsm_kcode,
dsm_name,
dsm_trty_code,
rsm_trty_code,
rsd_trty_code,
mr_trty_code,
yyyymm,
-- ----------------------------------------------------------------
-- EC → Retail 字段映射202601 起生效)
-- ----------------------------------------------------------------
CASE WHEN yyyymm >= '202601' AND bu_code = 'PC12' THEN 'PC09' ELSE bu_code END AS bu_code,
CASE WHEN yyyymm >= '202601' AND bu_report = 'EC' THEN 'Retail' ELSE bu_report END AS bu_report,
CASE WHEN yyyymm >= '202601' AND sub_bu_code = 'NA27' THEN 'NA06' ELSE sub_bu_code END AS sub_bu_code,
CASE WHEN yyyymm >= '202601' AND sub_bu_name = 'EC' THEN 'Retail' ELSE sub_bu_name END AS sub_bu_name,
CASE WHEN yyyymm >= '202601' AND sub_bu_name_en = 'EC' THEN 'Retail' ELSE sub_bu_name_en END AS sub_bu_name_en,
CASE WHEN yyyymm >= '202601' AND bu_name = 'EC' THEN 'Retail' ELSE bu_name END AS bu_name,
CASE WHEN yyyymm >= '202601' AND bu_name_en = 'EC' THEN 'Retail' ELSE bu_name_en END AS bu_name_en,
CASE WHEN yyyymm >= '202601' AND nsd_kcode = 'ND_EC0001_V' THEN 'KSGX559' ELSE nsd_kcode END AS nsd_kcode,
CASE WHEN yyyymm >= '202601' AND bu_name = 'EC'
AND nsd_name = 'Vacant' THEN '李白杨' ELSE nsd_name END AS nsd_name,
CASE WHEN yyyymm >= '202601' AND nsd_trty_code = 'ND_EC0001' THEN 'ND_RT0001' ELSE nsd_trty_code END AS nsd_trty_code,
CASE WHEN yyyymm >= '202601' AND bsd_kcode = 'VP_EC0001_V' THEN 'VP_RT0001_V' ELSE bsd_kcode END AS bsd_kcode,
CASE WHEN yyyymm >= '202601' AND bsd_trty_code = 'VP_EC0001' THEN 'VP_RT0001' ELSE bsd_trty_code END AS bsd_trty_code
FROM DM.dm_td_org
-- COMMAND ----------
-- ---------------------------------------------------------------------------------------
-- --修改时间20241105
-- --修改人Fanxujia
-- --修改内容:
-- --for AIA Dashboard新增NSD、RSD、RSM、DSM、MR、TEAM等信息
-- --仅AIA渠道的数据增加值其他渠道都为空
-- ---------------------------------------------------------------------------------------
-- ---------------------------------------------------AIA------------------------------------------------------------------------------
-- --AIA参考CHPA
-- ------所有BU能看AIA
-- --从销量表取到全部的机构、市场组合
-- with ALL_AUDIT_Market as (
-- select distinct NVL(t1.AUDIT_COD,'ROC') AUDIT_COD,
-- NVL(t2.market,'ALL Market') market
-- from dm.dm_ext_aia_sales t1
-- left join dm.dm_td_ext_aia_market_pack_mapping t2
-- on t1.pack_cod = t2.PACK_CODE
-- )
-- ,pack_market as (
-- select distinct PACK_CODE AS PACK_COD,market
-- from dm.dm_td_ext_aia_market_pack_mapping
-- )
-- --获取城市与大区中心的mapping
-- ,EXTERNAL_GEO as (
-- select distinct
-- concat(city_c, '市') as city_c,
-- REGION_CENTER
-- from DM.DM_TD_EXTERNAL_GEO_TEMP
-- where DATA_SOURCE = 'AIA(Monthly)'
-- )
-- --CVH架构月
-- ,CVH_YM as (
-- select key_value as yyyymm
-- from dm.dm_td_date_config
-- where key_code = 'pfmc_cvh'
-- )
-- --org表
-- ,org as (
-- select distinct
-- t1.yyyymm,
-- t1.bu_category,
-- t1.bu_code,
-- t1.bu_name_en,
-- t1.sub_bu_code,
-- t1.sub_bu_name,
-- t1.REGION_CODE,
-- t1.region_name,
-- t1.rc_code,
-- t1.rc_name,
-- t1.district_name as team,
-- t1.mr_trty_code,
-- t1.nsd_kcode,
-- case when t1.nsd_name = 'Vacant' then t1.nsd_kcode else t1.nsd_name end as nsd_name,
-- t1.rsd_kcode,
-- case when t1.rsd_name = 'Vacant' then t1.rsd_kcode else t1.rsd_name end as rsd_name,
-- t1.rsm_kcode,
-- case when t1.rsm_name = 'Vacant' then t1.rsm_kcode else t1.rsm_name end as rsm_name,
-- t1.dsm_kcode,
-- case when t1.dsm_name = 'Vacant' then t1.dsm_kcode else t1.dsm_name end as dsm_name,
-- t1.mr_kcode,
-- case when t1.mr_name = 'Vacant' then t1.mr_kcode else t1.mr_name end as mr_name
-- from dm_td_org_temp t1
-- inner join CVH_YM t2
-- on t1.yyyymm = t2.yyyymm
-- )
-- --territory表
-- ,territory as (
-- select distinct
-- t1.yyyymm,
-- t1.trty_code,
-- t1.inst_code,
-- t1.family_code
-- from dm.dm_td_sd_territory_indication t1
-- inner join CVH_YM t2
-- on t1.yyyymm = t2.yyyymm
-- where t1.bu not in ('CUBE','KA')
-- and ((t1.key_hp in (2) and t1.bu <> 'Retail' and t1.trty_code <>'Eagle') or t1.key_hp = 1)--chenwu 20250904 排除双考影响
-- )
-- --将内部的Family_code转为外部的pack_cod
-- ,inst_pack_previous as (
-- select distinct
-- t1.yyyymm,
-- t1.trty_code,
-- t1.inst_code,
-- t2.city_name,
-- t5.market,
-- case when t2.area_code = 'SOUTH' then 'South'
-- when t2.area_code = 'WEST' then 'West'
-- when t2.area_code = 'CENTRAL' then 'Central'
-- when t2.area_code = 'NORTH' then 'North'
-- when t2.area_code = 'EAST' then 'East'
-- end as REGION_CENTER
-- from territory t1
-- left join dwd.dwd_td_institution t2
-- on t1.inst_code = t2.inst_code
-- left join cdw_dwd_dim_product_wide t3
-- on t1.family_code = t3.prd_family_cd
-- left join dwd.dwd_td_imscode_azcode t4
-- on t3.prd_brand_cd = t4.brandcode
-- left join pack_market t5
-- on t4.ims_pack_cod = t5.PACK_COD
-- )
-- /*
-- 20251207 Chenwu 把可定的架构复制到立普妥上,直接替换市场 'Atorvastatin Market' = 'Rosuvastatin Market'
-- */
-- ,inst_pack as (
-- select
-- yyyymm,
-- trty_code,
-- inst_code,
-- city_name,
-- market,
-- REGION_CENTER
-- from inst_pack_previous
-- union all
-- select
-- yyyymm,
-- trty_code,
-- inst_code,
-- city_name,
-- 'Atorvastatin Market' market,
-- REGION_CENTER
-- from inst_pack_previous
-- where market = 'Rosuvastatin Market'
-- )
-- ---------------------------------------------------------------------------------------
-- --修改时间20250220
-- --修改人Zhu chenwu
-- --修改内容:
-- --原本存在部分Eagel的机构和市场没有挂上架构针对于没有挂上的部分用dws.dws_td_eg_cityterritory中的city 和family的关系对应到市场挂上架构。
-- ----------------------------------------------m-----------------------------------------
-- ,eagle_trty as
-- (---eagle的city 和 family 对应的 trtycode取数据时如果city和family对应的trtycode 有多个以p12p11,p11为准取第一个。
-- select SP_TRTY_CD,CITY_CD,FAMILY_CD from (
-- select *
-- ,row_number() over (partition by CITY_CD,FAMILY_CD order by PROJECT_CD desc) as num
-- from (
-- select SP_TRTY_CD,CITY_CD,FAMILY_CD,PROJECT_CD from dws.dws_td_eg_cityterritory t1
-- inner join CVH_YM t2
-- on t1.YM = t2.yyyymm
-- where SP_TRTY_CD not in (select distinct trty_code from dm.dm_td_sd_territory_indication where bu = 'Eagle')
-- and PROJECT_CD in (select distinct project_code from DWS.dws_td_eg_project_instype WHERE ins_type='医院')
-- and cast(nvl(SALES_RATE,0) as decimal(20,6))<>'0.000000'
-- group by 1,2,3,4
-- )
-- ) where num = 1
-- )
-- ,family_mapping as (--family和brand的mapping
-- select prd_family_cd,prd_brand_cd from cdw_dwd_dim_product_wide
-- group by 1,2
-- )
-- ,packcode_mapping as (--pack 和 brand的mapping
-- select brandcode,ims_pack_cod from dwd.dwd_td_imscode_azcode
-- group by 1,2
-- )
-- ,geo_mapping as (--city的中文
-- select city_code,city_name from dm.dm_td_geography
-- group by 1,2
-- )
-- ,eagle_mapping (--eagle表中city和family所对应的 岗位编码
-- select SP_TRTY_CD,city_name,market from (
-- select
-- t1.SP_TRTY_CD
-- -- ,t1.FAMILY_CD
-- -- ,t3.prd_brand_cd
-- ,t4.ims_pack_cod
-- ,t5.city_name
-- from eagle_trty t1
-- left join family_mapping t3
-- on t1.FAMILY_CD = t3.prd_family_cd --转换family 成 brand
-- left join packcode_mapping t4
-- on t3.prd_brand_cd = t4.brandcode
-- left join geo_mapping t5
-- on t1.CITY_CD = t5.city_code) A
-- inner join pack_market B on A.ims_pack_cod = B.PACK_COD
-- group by 1,2,3
-- )
-- ,audit_geo as (--audit的城市信息
-- select AUDIT_COD,max(CITY_C) as city_c from DM.DM_TD_EXTERNAL_GEO
-- where DATA_SOURCE = 'AIA(Monthly)'
-- group by 1)
-- ,eagle_trty_with_city as ( --eagle中 挂上 部分机构归不到eagle的按eagle的城市+品牌挂上
-- select
-- t0.AUDIT_COD,t0.market
-- ,t10.city_c
-- ,eagle_mapping.SP_TRTY_CD from ALL_AUDIT_Market t0
-- left join audit_geo t10 on t0.AUDIT_COD = t10.AUDIT_COD
-- left join eagle_mapping on eagle_mapping.city_name = t10.city_c and eagle_mapping.market = t0.market
-- where eagle_mapping.SP_TRTY_CD is not null
-- group by 1,2,3,4)
-- insert overwrite dm.DM_TD_EXT_AIA_ORG (
-- REGION_CODE,
-- region_name_en,
-- rc_code,
-- rc_name_en,
-- RegionCenter,
-- AUDIT_COD,
-- MARKET,
-- bu_category,
-- bu_name_en,
-- sub_bu_name,
-- sub_bu_code_auth,
-- bu_code_auth,
-- DATA_SOURCE,
-- REGION_RATIO,
-- RSM_Name,
-- RC_Name,
-- TEAM,
-- MR_TRTY_CODE,
-- NSD_KCODE,
-- NSD_NAME,
-- RSD_KCODE,
-- RSD_NAME,
-- RSM_KCODE,
-- DSM_KCODE,
-- DSM_NAME,
-- MR_KCODE,
-- MR_NAME
-- )
-- SELECT distinct
-- COALESCE(t2.REGION_CODE,t6.REGION_CODE,'ROC') as REGION_CODE,
-- COALESCE(t2.region_name,t6.region_name,'ROC') as region_name_en,
-- COALESCE(t2.rc_code,t6.rc_code,'ROC') as rc_code,
-- COALESCE(t2.rc_name,t6.rc_name,'ROC') as rc_name_en,
-- COALESCE(t1.REGION_CENTER,t4.REGION_CENTER,t7.REGION_CENTER,'') as RegionCenter,
-- t0.AUDIT_COD,
-- t0.MARKET,
-- COALESCE(t2.bu_category,t6.bu_category,'') as bu_category,
-- COALESCE(t2.bu_name_en,t6.bu_name_en,'') as bu_name_en,
-- COALESCE(t2.sub_bu_name,t6.sub_bu_name,'') as sub_bu_name,
-- COALESCE(t2.sub_bu_code,t6.sub_bu_code,'') as sub_bu_code_auth,
-- concat(COALESCE(t2.bu_code,t6.bu_code,''),'AIA(Monthly)') as bu_code_auth,
-- 'AIA(Monthly)' as DATA_SOURCE,
-- 1 REGION_RATIO,
-- COALESCE(t2.rsm_name,t6.rsm_name,'Vacant') as rsm_name,
-- COALESCE(t2.rsd_name,t6.rsd_name,'Vacant') as RC_Name,
-- COALESCE(t2.team,t6.team,'ROC') as team,
-- COALESCE(t2.mr_trty_code,t6.mr_trty_code,'Vacant') as mr_trty_code,
-- COALESCE(t2.nsd_kcode,t6.nsd_kcode,'Vacant') as nsd_kcode,
-- COALESCE(t2.nsd_name,t6.nsd_name,'Vacant') as nsd_name,
-- COALESCE(t2.rsd_kcode,t6.rsd_kcode,'Vacant') as rsd_kcode,
-- COALESCE(t2.rsd_name,t6.rsd_name,'Vacant') as rsd_name,
-- COALESCE(t2.rsm_kcode,t6.rsm_kcode,'Vacant') as rsm_kcode,
-- COALESCE(t2.dsm_kcode,t6.dsm_kcode,'Vacant') as dsm_kcode,
-- COALESCE(t2.dsm_name,t6.dsm_name,'Vacant') as dsm_name,
-- COALESCE(t2.mr_kcode,t6.mr_kcode,'Vacant') as mr_kcode,
-- COALESCE(t2.mr_name,t6.mr_name,'Vacant') as mr_name
-- -- ,t5.SP_TRTY_CD
-- from ALL_AUDIT_Market t0
-- left join inst_pack t1
-- on t0.AUDIT_COD = t1.inst_code
-- and t0.market = t1.market
-- left join org t2
-- on t1.trty_code = t2.mr_trty_code
-- and t1.yyyymm = t2.yyyymm
-- left join EXTERNAL_GEO t4
-- on t1.city_name = t4.city_c
-- left join eagle_trty_with_city t5
-- on t0.AUDIT_COD = t5.AUDIT_COD
-- and t0.market = t5.market and t1.inst_code is null
-- left join org t6
-- on t5.SP_TRTY_CD = t6.mr_trty_code
-- left join EXTERNAL_GEO t7
-- on t5.city_c = t7.city_c
-- COMMAND ----------
WITH
-- ----------------------------------------------------------------------------
-- [基础配置] CVH 考核月份白名单
-- ----------------------------------------------------------------------------
cvh_ym AS (
SELECT key_value AS yyyymm
FROM dm.dm_td_date_config
WHERE key_code = 'pfmc_cvh'
),
-- ----------------------------------------------------------------------------
-- [输入数据] 事实表中所有有效的 机构×市场 组合(作为主驱动集合)
-- ----------------------------------------------------------------------------
all_audit_market AS (
SELECT DISTINCT
NVL(s.AUDIT_COD, 'ROC') AS audit_cod,
NVL(m.market, 'ALL Market') AS market
FROM dm.dm_ext_aia_sales s
LEFT JOIN dm.dm_td_ext_aia_market_pack_mapping m
ON s.pack_cod = m.PACK_CODE
),
-- ----------------------------------------------------------------------------
-- [参照表] Pack → Market 映射
-- ----------------------------------------------------------------------------
pack_market AS (
SELECT DISTINCT
PACK_CODE AS pack_cod,
market
FROM dm.dm_td_ext_aia_market_pack_mapping
),
-- ----------------------------------------------------------------------------
-- [参照表] 城市 → 大区中心映射AIA 渠道)
-- ----------------------------------------------------------------------------
external_geo AS (
SELECT DISTINCT
CONCAT(city_c, '') AS city_c,
REGION_CENTER
FROM DM.DM_TD_EXTERNAL_GEO_TEMP
WHERE DATA_SOURCE = 'AIA(Monthly)'
),
-- ----------------------------------------------------------------------------
-- [内部组织] CVH 月份范围内的 org 层级数据
-- Vacant 岗位用 kcode 替代,便于前端展示
-- ----------------------------------------------------------------------------
org AS (
SELECT DISTINCT
o.yyyymm,
o.bu_category,
o.bu_code,
o.bu_name_en,
o.sub_bu_code,
o.sub_bu_name,
o.REGION_CODE,
o.region_name,
o.rc_code,
o.rc_name,
o.district_name AS team,
o.mr_trty_code,
o.nsd_kcode,
CASE WHEN o.nsd_name = 'Vacant' THEN o.nsd_kcode ELSE o.nsd_name END AS nsd_name,
o.rsd_kcode,
CASE WHEN o.rsd_name = 'Vacant' THEN o.rsd_kcode ELSE o.rsd_name END AS rsd_name,
o.rsm_kcode,
CASE WHEN o.rsm_name = 'Vacant' THEN o.rsm_kcode ELSE o.rsm_name END AS rsm_name,
o.dsm_kcode,
CASE WHEN o.dsm_name = 'Vacant' THEN o.dsm_kcode ELSE o.dsm_name END AS dsm_name,
o.mr_kcode,
CASE WHEN o.mr_name = 'Vacant' THEN o.mr_kcode ELSE o.mr_name END AS mr_name
FROM dm_td_org_temp o
INNER JOIN cvh_ym c ON o.yyyymm = c.yyyymm
),
-- ----------------------------------------------------------------------------
-- [正常路径 1/3] CVH 月份范围内的 Territory 指示表
-- 排除 CUBE、KA双考场景仅保留 key_hp=1 或非 Eagle 的 key_hp=2 记录
-- 修改: chenwu 20250904
-- ----------------------------------------------------------------------------
territory AS (
SELECT DISTINCT
t.yyyymm,
t.trty_code,
t.inst_code,
t.family_code
FROM dm.dm_td_sd_territory_indication t
INNER JOIN cvh_ym c ON t.yyyymm = c.yyyymm
WHERE t.bu NOT IN ('CUBE', 'KA')
AND (
(t.key_hp = 2 AND t.bu <> 'Retail' AND t.trty_code <> 'Eagle')
OR t.key_hp = 1
)
),
-- ----------------------------------------------------------------------------
-- [正常路径 2/3] Territory → 机构 → 城市 → 市场 映射
-- family_code 经 product_wide → imscode_azcode → pack_market 三跳转换
-- ----------------------------------------------------------------------------
inst_pack_base AS (
SELECT DISTINCT
t.yyyymm,
t.trty_code,
t.inst_code,
i.city_name,
pm.market,
CASE i.area_code
WHEN 'SOUTH' THEN 'South'
WHEN 'WEST' THEN 'West'
WHEN 'CENTRAL' THEN 'Central'
WHEN 'NORTH' THEN 'North'
WHEN 'EAST' THEN 'East'
END AS region_center
FROM territory t
LEFT JOIN dwd.dwd_td_institution i ON t.inst_code = i.inst_code
LEFT JOIN cdw_dwd_dim_product_wide p ON t.family_code = p.prd_family_cd
LEFT JOIN dwd.dwd_td_imscode_azcode az ON p.prd_brand_cd = az.brandcode
LEFT JOIN pack_market pm ON az.ims_pack_cod = pm.pack_cod
),
-- [正常路径 3/3] 可定架构Rosuvastatin Market复制到立普妥Atorvastatin Market
-- 修改: Chenwu 20251207
inst_pack AS (
SELECT * FROM inst_pack_base
UNION ALL
SELECT yyyymm, trty_code, inst_code, city_name,
'Atorvastatin Market' AS market,
region_center
FROM inst_pack_base
WHERE market = 'Rosuvastatin Market'
),
-- ============================================================================
-- [Eagle 回退路径] 部分机构未能通过正常 territory 路径挂上架构,
-- 改用 城市+品牌 关系匹配 Eagle territory code
-- 修改: Chenwu 20250220
-- ============================================================================
-- Eagle: city × family → territory code多个时取 PROJECT_CD 最大者)
eagle_trty AS (
SELECT SP_TRTY_CD, CITY_CD, FAMILY_CD
FROM (
SELECT
SP_TRTY_CD, CITY_CD, FAMILY_CD,
ROW_NUMBER() OVER (PARTITION BY CITY_CD, FAMILY_CD ORDER BY PROJECT_CD DESC) AS rn
FROM (
SELECT eg.SP_TRTY_CD, eg.CITY_CD, eg.FAMILY_CD, eg.PROJECT_CD
FROM dws.dws_td_eg_cityterritory eg
INNER JOIN cvh_ym c ON eg.YM = c.yyyymm
-- 仅保留非 Eagle BU 已覆盖的 territoryAnti-Join性能优于 NOT IN 子查询)
LEFT JOIN (
SELECT DISTINCT trty_code
FROM dm.dm_td_sd_territory_indication
WHERE bu = 'Eagle'
) ex ON eg.SP_TRTY_CD = ex.trty_code
-- 仅医院类项目
INNER JOIN (
SELECT DISTINCT project_code
FROM DWS.dws_td_eg_project_instype
WHERE ins_type = '医院'
) pi ON eg.PROJECT_CD = pi.project_code
WHERE ex.trty_code IS NULL -- Anti-Join 条件
AND NVL(eg.SALES_RATE, 0) <> 0 -- 排除零销售比例原逻辑cast <> '0.000000'
GROUP BY eg.SP_TRTY_CD, eg.CITY_CD, eg.FAMILY_CD, eg.PROJECT_CD
) base
) deduped
WHERE rn = 1
),
-- Eagle territory → 市场 映射family → brand → pack → marketcity code → city name
eagle_mapping AS (
SELECT
et.SP_TRTY_CD,
g.city_name,
pm.market
FROM eagle_trty et
LEFT JOIN cdw_dwd_dim_product_wide p ON et.FAMILY_CD = p.prd_family_cd
LEFT JOIN dwd.dwd_td_imscode_azcode az ON p.prd_brand_cd = az.brandcode
LEFT JOIN dm.dm_td_geography g ON et.CITY_CD = g.city_code
INNER JOIN pack_market pm ON az.ims_pack_cod = pm.pack_cod
GROUP BY et.SP_TRTY_CD, g.city_name, pm.market
),
-- Audit 机构 → 城市 映射
audit_geo AS (
SELECT AUDIT_COD, MAX(CITY_C) AS city_c
FROM DM.DM_TD_EXTERNAL_GEO
WHERE DATA_SOURCE = 'AIA(Monthly)'
GROUP BY AUDIT_COD
),
-- 汇总:对 all_audit_market 中无法通过 inst_pack 匹配的记录,
-- 尝试用 Eagle 城市+市场 回退挂上 territory code
eagle_trty_with_city AS (
SELECT
am.AUDIT_COD,
am.market,
ag.city_c,
em.SP_TRTY_CD
FROM all_audit_market am
LEFT JOIN audit_geo ag ON am.AUDIT_COD = ag.AUDIT_COD
LEFT JOIN eagle_mapping em ON em.city_name = ag.city_c
AND em.market = am.market
WHERE em.SP_TRTY_CD IS NOT NULL -- 仅保留能匹配到 Eagle territory 的行
GROUP BY am.AUDIT_COD, am.market, ag.city_c, em.SP_TRTY_CD
)
-- ----------------------------------------------------------------------------
-- 主写入:覆盖写目标表
-- 优先级: t2正常路径 org> t6Eagle 回退 org> 硬编码默认值
-- ----------------------------------------------------------------------------
INSERT OVERWRITE dm.DM_TD_EXT_AIA_ORG (
REGION_CODE, region_name_en,
rc_code, rc_name_en,
RegionCenter,
AUDIT_COD, MARKET,
bu_category, bu_name_en,
sub_bu_name, sub_bu_code_auth, bu_code_auth,
DATA_SOURCE, REGION_RATIO,
RSM_Name, RC_Name, TEAM,
MR_TRTY_CODE,
NSD_KCODE, NSD_NAME,
RSD_KCODE, RSD_NAME,
RSM_KCODE,
DSM_KCODE, DSM_NAME,
MR_KCODE, MR_NAME
)
SELECT DISTINCT
COALESCE(t2.REGION_CODE, t6.REGION_CODE, 'ROC') AS REGION_CODE,
COALESCE(t2.region_name, t6.region_name, 'ROC') AS region_name_en,
COALESCE(t2.rc_code, t6.rc_code, 'ROC') AS rc_code,
COALESCE(t2.rc_name, t6.rc_name, 'ROC') AS rc_name_en,
COALESCE(t1.region_center, t4.REGION_CENTER, t7.REGION_CENTER, '') AS RegionCenter,
t0.audit_cod,
t0.market,
COALESCE(t2.bu_category, t6.bu_category, '') AS bu_category,
COALESCE(t2.bu_name_en, t6.bu_name_en, '') AS bu_name_en,
COALESCE(t2.sub_bu_name, t6.sub_bu_name, '') AS sub_bu_name,
COALESCE(t2.sub_bu_code, t6.sub_bu_code, '') AS sub_bu_code_auth,
CONCAT(COALESCE(t2.bu_code, t6.bu_code, ''), 'AIA(Monthly)') AS bu_code_auth,
'AIA(Monthly)' AS DATA_SOURCE,
1 AS REGION_RATIO,
COALESCE(t2.rsm_name, t6.rsm_name, 'Vacant') AS RSM_Name,
COALESCE(t2.rsd_name, t6.rsd_name, 'Vacant') AS RC_Name,
COALESCE(t2.team, t6.team, 'ROC') AS TEAM,
COALESCE(t2.mr_trty_code, t6.mr_trty_code, 'Vacant') AS MR_TRTY_CODE,
COALESCE(t2.nsd_kcode, t6.nsd_kcode, 'Vacant') AS NSD_KCODE,
COALESCE(t2.nsd_name, t6.nsd_name, 'Vacant') AS NSD_NAME,
COALESCE(t2.rsd_kcode, t6.rsd_kcode, 'Vacant') AS RSD_KCODE,
COALESCE(t2.rsd_name, t6.rsd_name, 'Vacant') AS RSD_NAME,
COALESCE(t2.rsm_kcode, t6.rsm_kcode, 'Vacant') AS RSM_KCODE,
COALESCE(t2.dsm_kcode, t6.dsm_kcode, 'Vacant') AS DSM_KCODE,
COALESCE(t2.dsm_name, t6.dsm_name, 'Vacant') AS DSM_NAME,
COALESCE(t2.mr_kcode, t6.mr_kcode, 'Vacant') AS MR_KCODE,
COALESCE(t2.mr_name, t6.mr_name, 'Vacant') AS MR_NAME
FROM all_audit_market t0
-- ── 正常路径 ──────────────────────────────────────────────────────────────
LEFT JOIN inst_pack t1 ON t0.audit_cod = t1.inst_code
AND t0.market = t1.market
LEFT JOIN org t2 ON t1.trty_code = t2.mr_trty_code
AND t1.yyyymm = t2.yyyymm
LEFT JOIN external_geo t4 ON t1.city_name = t4.city_c
-- ── Eagle 回退路径(仅当正常路径未能匹配机构时) ──────────────────────────
LEFT JOIN eagle_trty_with_city t5 ON t0.audit_cod = t5.AUDIT_COD
AND t0.market = t5.market
AND t1.inst_code IS NULL -- 正常路径未命中
LEFT JOIN org t6 ON t5.SP_TRTY_CD = t6.mr_trty_code
LEFT JOIN external_geo t7 ON t5.city_c = t7.city_c
-- COMMAND ----------
-- --修改时间20240808
-- --修改人FanXuJia
-- --修改背景:
-- --事实表与维度表来自于不同手工表目前存在一部分audit_cod在事实表有销量但是在维度表没有这个audit_cod导致销量缺失。
-- --因此需要从事实表补全这部分audit_cod
-- with sales as (
-- select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.DM_TF_EXT_UNIONALL_SALES
-- union
-- select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.dm_tf_external_sales_thc
-- )
-- ,market_pack as (
-- select distinct PACK_COD,MARKET,DATA_SOURCE from dm.dm_td_external_market_pack_mapping
-- )
-- ,org as (
-- select distinct AUDIT_COD,MARKET,DATA_SOURCE from dm.DM_TD_EXT_AIA_ORG
-- )
-- ,tmp_org as (
-- select distinct a.AUDIT_COD,b.MARKET,a.DATA_SOURCE
-- from sales a
-- left join market_pack b on a.PACK_COD = b.PACK_COD and a.DATA_SOURCE = b.DATA_SOURCE
-- left join org c on a.DATA_SOURCE = c.DATA_SOURCE and a.AUDIT_COD = c.AUDIT_COD and b.MARKET = c.MARKET
-- where C.AUDIT_COD IS NULL
-- )
-- insert into table dm.DM_TD_EXT_AIA_ORG
-- (
-- REGION_CODE,
-- region_name_en,
-- RSM_Name,
-- rc_code,
-- rc_name_en,
-- RC_Name,
-- RegionCenter,
-- AUDIT_COD,
-- MARKET,
-- bu_category,
-- bu_name_en,
-- sub_bu_name,
-- sub_bu_code_auth,
-- bu_code_auth,
-- DATA_SOURCE,
-- REGION_RATIO,
-- TEAM,
-- MR_TRTY_CODE,
-- NSD_KCODE,
-- NSD_NAME,
-- RSD_KCODE,
-- RSD_NAME,
-- RSM_KCODE,
-- DSM_KCODE,
-- DSM_NAME,
-- MR_KCODE,
-- MR_NAME
-- )
-- select
-- 'ROC' as REGION_CODE,
-- 'ROC' as region_name_en,
-- 'Vacant' as RSM_Name,
-- 'ROC' as rc_code,
-- 'ROC' as rc_name_en,
-- 'Vacant' as RC_Name,
-- null as RegionCenter,
-- AUDIT_COD,
-- MARKET,
-- null as bu_category,
-- null as bu_name_en,
-- null as sub_bu_name,
-- null as sub_bu_code_auth,
-- DATA_SOURCE as bu_code_auth,
-- DATA_SOURCE,
-- 1 as REGION_RATIO,
-- 'ROC' as TEAM,
-- 'Vacant' as MR_TRTY_CODE,
-- 'Vacant' as NSD_KCODE,
-- 'Vacant' as NSD_NAME,
-- 'Vacant' as RSD_KCODE,
-- 'Vacant' as RSD_NAME,
-- 'Vacant' as RSM_KCODE,
-- 'Vacant' as DSM_KCODE,
-- 'Vacant' as DSM_NAME,
-- 'Vacant' as MR_KCODE,
-- 'Vacant' as MR_NAME
-- from tmp_org
-- where DATA_SOURCE = 'AIA(Monthly)'
-- COMMAND ----------
-- DBTITLE 1,add
-- =============================================================================
-- CELL 3: INSERT INTO —— 补全缺失机构Backfill
--
-- 背景: 事实表dm_tf_external_sales / _thc与维度表来自不同手工文件
-- 部分 audit_cod 有销量但维度表中缺失,导致前端漏数。
-- 此步骤找出差集并以默认值兜底写入。
-- 修改时间: 20240808 修改人: FanXuJia
-- =============================================================================
-- COMMAND ----------
WITH
-- 提前过滤 AIA 渠道,减少后续 JOIN 数据量
aia_sales AS (
SELECT PACK_CODE, AUDIT_CODE
FROM dm.dm_tf_ext_aia_sales
),
pack_market_ref AS (
SELECT DISTINCT PACK_CODE, MARKET
FROM dm.dm_td_ext_aia_market_pack_mapping
-- WHERE DATA_SOURCE = 'AIA(Monthly)'
),
existing_org AS (
SELECT DISTINCT AUDIT_COD, MARKET
FROM dm.DM_TD_EXT_AIA_ORG
WHERE DATA_SOURCE = 'AIA(Monthly)'
),
-- 找出:有销量 但 维度表中没有的 audit_cod × market 组合
missing_org AS (
SELECT DISTINCT
s.AUDIT_CODE,
m.MARKET
FROM aia_sales s
LEFT JOIN pack_market_ref m ON s.PACK_CODE = m.PACK_CODE
LEFT JOIN existing_org e ON s.AUDIT_CODE = e.AUDIT_COD
AND m.MARKET = e.MARKET
WHERE e.AUDIT_COD IS NULL -- Anti-Join: 维度表中不存在
AND m.MARKET IS NOT NULL -- 排除无法映射到市场的包装
)
INSERT INTO TABLE dm.DM_TD_EXT_AIA_ORG (
REGION_CODE, region_name_en,
RSM_Name, rc_code, rc_name_en, RC_Name, RegionCenter,
AUDIT_COD, MARKET,
bu_category, bu_name_en, sub_bu_name, sub_bu_code_auth, bu_code_auth,
DATA_SOURCE, REGION_RATIO,
TEAM,
MR_TRTY_CODE,
NSD_KCODE, NSD_NAME,
RSD_KCODE, RSD_NAME,
RSM_KCODE,
DSM_KCODE, DSM_NAME,
MR_KCODE, MR_NAME
)
SELECT
'ROC' AS REGION_CODE,
'ROC' AS region_name_en,
'Vacant' AS RSM_Name,
'ROC' AS rc_code,
'ROC' AS rc_name_en,
'Vacant' AS RC_Name,
NULL AS RegionCenter,
AUDIT_CODE,
MARKET,
NULL AS bu_category,
NULL AS bu_name_en,
NULL AS sub_bu_name,
NULL AS sub_bu_code_auth,
'AIA(Monthly)' AS bu_code_auth,
'AIA(Monthly)' AS DATA_SOURCE,
1 AS REGION_RATIO,
'ROC' AS TEAM,
'Vacant' AS MR_TRTY_CODE,
'Vacant' AS NSD_KCODE,
'Vacant' AS NSD_NAME,
'Vacant' AS RSD_KCODE,
'Vacant' AS RSD_NAME,
'Vacant' AS RSM_KCODE,
'Vacant' AS DSM_KCODE,
'Vacant' AS DSM_NAME,
'Vacant' AS MR_KCODE,
'Vacant' AS MR_NAME
FROM missing_org
-- COMMAND ----------
-- -----------------------------------------------------------
-- --修改时间20241118
-- --修改人Fanxujia
-- --修改内容:
-- --使用手工文件排除掉每个渠道的不需要显示的市场
-- -----------------------------------------------------------
-- with hidden_market as (
-- select distinct
-- case when upper(data_source) = 'CHPA' then 'IQVIA-CHPA(Monthly)'
-- when upper(data_source) = '科室市场' then 'XH Data(Quarterly)'
-- when upper(data_source) = 'EC' then 'EC(Monthly)'
-- when upper(data_source) = 'RETAIL' then 'Retail(Quarterly)'
-- when upper(data_source) = 'CHC' then 'CHC(Quarterly)'
-- when upper(data_source) = 'AIA' then 'AIA(Monthly)'
-- when upper(data_source) = 'THC' then 'THC(Quarterly)'
-- when upper(data_source) = 'COUNTY' then 'IQVIA-COUNTY(Quarterly)'
-- else data_source
-- end as data_source,
-- upper(hidden_market) as hidden_market
-- from dwd.dwd_gnd_ims_hidden_market
-- union all
-- select
-- 'AIA(Monthly)' as data_source,
-- 'AIA ALL Market'
-- )
-- MERGE into dm.DM_TD_EXT_AIA_ORG as t1
-- USING hidden_market t2
-- on t1.data_source = t2.data_source
-- and upper(t1.MARKET) = upper(t2.hidden_market)
-- WHEN MATCHED THEN
-- DELETE
-- COMMAND ----------
-- DBTITLE 1,hidden_market
-- =============================================================================
-- CELL 4: MERGE DELETE —— 按隐藏市场规则清理不展示的行
--
-- 背景: 通过手工文件 dwd_gnd_ims_hidden_market 维护各渠道不需展示的市场列表,
-- 同时硬编码排除 'AIA ALL Market' 聚合行。
-- 修改时间: 20241118 修改人: Fanxujia
-- =============================================================================
-- COMMAND ----------
WITH hidden_market AS (
SELECT DISTINCT
-- 将手工文件中的简写 data_source 标准化为系统内的完整名称
CASE UPPER(data_source)
WHEN 'CHPA' THEN 'IQVIA-CHPA(Monthly)'
WHEN '科室市场' THEN 'XH Data(Quarterly)'
WHEN 'EC' THEN 'EC(Monthly)'
WHEN 'RETAIL' THEN 'Retail(Quarterly)'
WHEN 'CHC' THEN 'CHC(Quarterly)'
WHEN 'AIA' THEN 'AIA(Monthly)'
WHEN 'THC' THEN 'THC(Quarterly)'
WHEN 'COUNTY' THEN 'IQVIA-COUNTY(Quarterly)'
ELSE data_source
END AS data_source,
UPPER(hidden_market) AS hidden_market
FROM dwd.dwd_gnd_ims_hidden_market
UNION ALL
-- 固定排除 AIA 的全市场聚合行
SELECT 'AIA(Monthly)' AS data_source, 'ALL MARKET' AS hidden_market
)
MERGE INTO dm.DM_TD_EXT_AIA_ORG AS t1
USING hidden_market AS t2
ON t1.DATA_SOURCE = t2.data_source
AND UPPER(t1.MARKET) = t2.hidden_market -- hidden_market 已在 CTE 中 UPPER 化,减少重复计算
WHEN MATCHED THEN DELETE;
-- COMMAND ----------
-- WITH
-- -- ----------------------------------------------------------------------------
-- -- [基础配置] CVH 考核月份白名单
-- -- ----------------------------------------------------------------------------
-- cvh_ym AS (
-- SELECT key_value AS yyyymm
-- FROM dm.dm_td_date_config
-- WHERE key_code = 'pfmc_cvh'
-- ),
-- -- ----------------------------------------------------------------------------
-- -- [输入数据] 事实表中所有有效的 机构×市场 组合(作为主驱动集合)
-- -- ----------------------------------------------------------------------------
-- all_audit_market AS (
-- SELECT DISTINCT
-- NVL(s.AUDIT_COD, 'ROC') AS audit_cod,
-- NVL(m.market, 'ALL Market') AS market
-- FROM dm.dm_ext_aia_sales s
-- LEFT JOIN dm.dm_td_ext_aia_market_pack_mapping m
-- ON s.pack_cod = m.PACK_CODE
-- ),
-- -- ----------------------------------------------------------------------------
-- -- [参照表] Pack → Market 映射
-- -- ----------------------------------------------------------------------------
-- pack_market AS (
-- SELECT DISTINCT
-- PACK_CODE AS pack_cod,
-- market
-- FROM dm.dm_td_ext_aia_market_pack_mapping
-- ),
-- -- ----------------------------------------------------------------------------
-- -- [参照表] 城市 → 大区中心映射AIA 渠道)
-- -- ----------------------------------------------------------------------------
-- external_geo AS (
-- SELECT DISTINCT
-- CONCAT(city_c, '市') AS city_c,
-- REGION_CENTER
-- FROM DM.DM_TD_EXTERNAL_GEO_TEMP
-- WHERE DATA_SOURCE = 'AIA(Monthly)'
-- ),
-- -- ----------------------------------------------------------------------------
-- -- [内部组织] CVH 月份范围内的 org 层级数据
-- -- Vacant 岗位用 kcode 替代,便于前端展示
-- -- ----------------------------------------------------------------------------
-- org AS (
-- SELECT DISTINCT
-- o.yyyymm,
-- o.bu_category,
-- o.bu_code,
-- o.bu_name_en,
-- o.sub_bu_code,
-- o.sub_bu_name,
-- o.REGION_CODE,
-- o.region_name,
-- o.rc_code,
-- o.rc_name,
-- o.district_name AS team,
-- o.mr_trty_code,
-- o.nsd_kcode,
-- CASE WHEN o.nsd_name = 'Vacant' THEN o.nsd_kcode ELSE o.nsd_name END AS nsd_name,
-- o.rsd_kcode,
-- CASE WHEN o.rsd_name = 'Vacant' THEN o.rsd_kcode ELSE o.rsd_name END AS rsd_name,
-- o.rsm_kcode,
-- CASE WHEN o.rsm_name = 'Vacant' THEN o.rsm_kcode ELSE o.rsm_name END AS rsm_name,
-- o.dsm_kcode,
-- CASE WHEN o.dsm_name = 'Vacant' THEN o.dsm_kcode ELSE o.dsm_name END AS dsm_name,
-- o.mr_kcode,
-- CASE WHEN o.mr_name = 'Vacant' THEN o.mr_kcode ELSE o.mr_name END AS mr_name
-- FROM dm_td_org_temp o
-- INNER JOIN cvh_ym c ON o.yyyymm = c.yyyymm
-- ),
-- -- ----------------------------------------------------------------------------
-- -- [正常路径 1/3] CVH 月份范围内的 Territory 指示表
-- -- 排除 CUBE、KA双考场景仅保留 key_hp=1 或非 Eagle 的 key_hp=2 记录
-- -- 修改: chenwu 20250904
-- -- ----------------------------------------------------------------------------
-- territory AS (
-- SELECT DISTINCT
-- t.yyyymm,
-- t.trty_code,
-- t.inst_code,
-- t.family_code
-- FROM dm.dm_td_sd_territory_indication t
-- INNER JOIN cvh_ym c ON t.yyyymm = c.yyyymm
-- WHERE t.bu NOT IN ('CUBE', 'KA')
-- AND (
-- (t.key_hp = 2 AND t.bu <> 'Retail' AND t.trty_code <> 'Eagle')
-- OR t.key_hp = 1
-- )
-- ),
-- -- ----------------------------------------------------------------------------
-- -- [正常路径 2/3] Territory → 机构 → 城市 → 市场 映射
-- -- family_code 经 product_wide → imscode_azcode → pack_market 三跳转换
-- -- ----------------------------------------------------------------------------
-- inst_pack_base AS (
-- SELECT DISTINCT
-- t.yyyymm,
-- t.trty_code,
-- t.inst_code,
-- i.city_name,
-- pm.market,
-- CASE i.area_code
-- WHEN 'SOUTH' THEN 'South'
-- WHEN 'WEST' THEN 'West'
-- WHEN 'CENTRAL' THEN 'Central'
-- WHEN 'NORTH' THEN 'North'
-- WHEN 'EAST' THEN 'East'
-- END AS region_center
-- FROM territory t
-- LEFT JOIN dwd.dwd_td_institution i ON t.inst_code = i.inst_code
-- LEFT JOIN cdw_dwd_dim_product_wide p ON t.family_code = p.prd_family_cd
-- LEFT JOIN dwd.dwd_td_imscode_azcode az ON p.prd_brand_cd = az.brandcode
-- LEFT JOIN pack_market pm ON az.ims_pack_cod = pm.pack_cod
-- ),
-- -- [正常路径 3/3] 可定架构Rosuvastatin Market复制到立普妥Atorvastatin Market
-- -- 修改: Chenwu 20251207
-- inst_pack AS (
-- SELECT * FROM inst_pack_base
-- UNION ALL
-- SELECT yyyymm, trty_code, inst_code, city_name,
-- 'Atorvastatin Market' AS market,
-- region_center
-- FROM inst_pack_base
-- WHERE market = 'Rosuvastatin Market'
-- ),
-- -- ============================================================================
-- -- [Eagle 回退路径] 部分机构未能通过正常 territory 路径挂上架构,
-- -- 改用 城市+品牌 关系匹配 Eagle territory code
-- -- 修改: Chenwu 20250220
-- -- ============================================================================
-- -- Eagle: city × family → territory code多个时取 PROJECT_CD 最大者)
-- eagle_trty AS (
-- SELECT SP_TRTY_CD, CITY_CD, FAMILY_CD
-- FROM (
-- SELECT
-- SP_TRTY_CD, CITY_CD, FAMILY_CD,
-- ROW_NUMBER() OVER (PARTITION BY CITY_CD, FAMILY_CD ORDER BY PROJECT_CD DESC) AS rn
-- FROM (
-- SELECT eg.SP_TRTY_CD, eg.CITY_CD, eg.FAMILY_CD, eg.PROJECT_CD
-- FROM dws.dws_td_eg_cityterritory eg
-- INNER JOIN cvh_ym c ON eg.YM = c.yyyymm
-- -- 仅保留非 Eagle BU 已覆盖的 territoryAnti-Join性能优于 NOT IN 子查询)
-- LEFT JOIN (
-- SELECT DISTINCT trty_code
-- FROM dm.dm_td_sd_territory_indication
-- WHERE bu = 'Eagle'
-- ) ex ON eg.SP_TRTY_CD = ex.trty_code
-- -- 仅医院类项目
-- INNER JOIN (
-- SELECT DISTINCT project_code
-- FROM DWS.dws_td_eg_project_instype
-- WHERE ins_type = '医院'
-- ) pi ON eg.PROJECT_CD = pi.project_code
-- WHERE ex.trty_code IS NULL -- Anti-Join 条件
-- AND NVL(eg.SALES_RATE, 0) <> 0 -- 排除零销售比例原逻辑cast <> '0.000000'
-- GROUP BY eg.SP_TRTY_CD, eg.CITY_CD, eg.FAMILY_CD, eg.PROJECT_CD
-- ) base
-- ) deduped
-- WHERE rn = 1
-- ),
-- -- Eagle territory → 市场 映射family → brand → pack → marketcity code → city name
-- eagle_mapping AS (
-- SELECT
-- et.SP_TRTY_CD,
-- g.city_name,
-- pm.market
-- FROM eagle_trty et
-- LEFT JOIN cdw_dwd_dim_product_wide p ON et.FAMILY_CD = p.prd_family_cd
-- LEFT JOIN dwd.dwd_td_imscode_azcode az ON p.prd_brand_cd = az.brandcode
-- LEFT JOIN dm.dm_td_geography g ON et.CITY_CD = g.city_code
-- INNER JOIN pack_market pm ON az.ims_pack_cod = pm.pack_cod
-- GROUP BY et.SP_TRTY_CD, g.city_name, pm.market
-- ),
-- -- Audit 机构 → 城市 映射
-- audit_geo AS (
-- SELECT AUDIT_COD, MAX(CITY_C) AS city_c
-- FROM DM.DM_TD_EXTERNAL_GEO
-- WHERE DATA_SOURCE = 'AIA(Monthly)'
-- GROUP BY AUDIT_COD
-- ),
-- -- 汇总:对 all_audit_market 中无法通过 inst_pack 匹配的记录,
-- -- 尝试用 Eagle 城市+市场 回退挂上 territory code
-- eagle_trty_with_city AS (
-- SELECT
-- am.AUDIT_COD,
-- am.market,
-- ag.city_c,
-- em.SP_TRTY_CD
-- FROM all_audit_market am
-- LEFT JOIN audit_geo ag ON am.AUDIT_COD = ag.AUDIT_COD
-- LEFT JOIN eagle_mapping em ON em.city_name = ag.city_c
-- AND em.market = am.market
-- WHERE em.SP_TRTY_CD IS NOT NULL -- 仅保留能匹配到 Eagle territory 的行
-- GROUP BY am.AUDIT_COD, am.market, ag.city_c, em.SP_TRTY_CD
-- )
-- -- ----------------------------------------------------------------------------
-- -- 主写入:覆盖写目标表
-- -- 优先级: t2正常路径 org> t6Eagle 回退 org> 硬编码默认值
-- -- ----------------------------------------------------------------------------
-- -- SELECT DISTINCT
-- -- COALESCE(t2.REGION_CODE, t6.REGION_CODE, 'ROC') AS REGION_CODE,
-- -- COALESCE(t2.region_name, t6.region_name, 'ROC') AS region_name_en,
-- -- COALESCE(t2.rc_code, t6.rc_code, 'ROC') AS rc_code,
-- -- COALESCE(t2.rc_name, t6.rc_name, 'ROC') AS rc_name_en,
-- -- COALESCE(t1.region_center, t4.REGION_CENTER, t7.REGION_CENTER, '') AS RegionCenter,
-- -- t0.audit_cod,
-- -- t0.market,
-- -- COALESCE(t2.bu_category, t6.bu_category, '') AS bu_category,
-- -- COALESCE(t2.bu_name_en, t6.bu_name_en, '') AS bu_name_en,
-- -- COALESCE(t2.sub_bu_name, t6.sub_bu_name, '') AS sub_bu_name,
-- -- COALESCE(t2.sub_bu_code, t6.sub_bu_code, '') AS sub_bu_code_auth,
-- -- CONCAT(COALESCE(t2.bu_code, t6.bu_code, ''), 'AIA(Monthly)') AS bu_code_auth,
-- -- 'AIA(Monthly)' AS DATA_SOURCE,
-- -- 1 AS REGION_RATIO,
-- -- COALESCE(t2.rsm_name, t6.rsm_name, 'Vacant') AS RSM_Name,
-- -- COALESCE(t2.rsd_name, t6.rsd_name, 'Vacant') AS RC_Name,
-- -- COALESCE(t2.team, t6.team, 'ROC') AS TEAM,
-- -- COALESCE(t2.mr_trty_code, t6.mr_trty_code, 'Vacant') AS MR_TRTY_CODE,
-- -- COALESCE(t2.nsd_kcode, t6.nsd_kcode, 'Vacant') AS NSD_KCODE,
-- -- COALESCE(t2.nsd_name, t6.nsd_name, 'Vacant') AS NSD_NAME,
-- -- COALESCE(t2.rsd_kcode, t6.rsd_kcode, 'Vacant') AS RSD_KCODE,
-- -- COALESCE(t2.rsd_name, t6.rsd_name, 'Vacant') AS RSD_NAME,
-- -- COALESCE(t2.rsm_kcode, t6.rsm_kcode, 'Vacant') AS RSM_KCODE,
-- -- COALESCE(t2.dsm_kcode, t6.dsm_kcode, 'Vacant') AS DSM_KCODE,
-- -- COALESCE(t2.dsm_name, t6.dsm_name, 'Vacant') AS DSM_NAME,
-- -- COALESCE(t2.mr_kcode, t6.mr_kcode, 'Vacant') AS MR_KCODE,
-- -- COALESCE(t2.mr_name, t6.mr_name, 'Vacant') AS MR_NAME
-- -- FROM all_audit_market t0
-- -- -- ── 正常路径 ──────────────────────────────────────────────────────────────
-- -- LEFT JOIN inst_pack t1 ON t0.audit_cod = t1.inst_code
-- -- AND t0.market = t1.market
-- -- LEFT JOIN org t2 ON t1.trty_code = t2.mr_trty_code
-- -- AND t1.yyyymm = t2.yyyymm
-- -- LEFT JOIN external_geo t4 ON t1.city_name = t4.city_c
-- -- -- ── Eagle 回退路径(仅当正常路径未能匹配机构时) ──────────────────────────
-- -- LEFT JOIN eagle_trty_with_city t5 ON t0.audit_cod = t5.AUDIT_COD
-- -- AND t0.market = t5.market
-- -- AND t1.inst_code IS NULL -- 正常路径未命中
-- -- LEFT JOIN org t6 ON t5.SP_TRTY_CD = t6.mr_trty_code
-- -- LEFT JOIN external_geo t7 ON t5.city_c = t7.city_c
-- select * from inst_pack t1
-- LEFT JOIN org t2 ON t1.trty_code = t2.mr_trty_code
-- AND t1.yyyymm = t2.yyyymm
-- where t1.inst_code = 'ZJTZ006H'
-- and t1.market = 'Oral lipid-lowering Market(Excl Potent Statin)'