langjiu-project/FineReport/销售主题/报表/销售业绩/销售业绩组合统计表.sql

461 lines
20 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.

-- ======================================
-- 2024-11-21: 需求调整,暂缓维护
-- ======================================
SELECT
${if(len(sDim)>0,sDim + ","," ")}
${if(FIND('合同金额', sIndex)>0," ROUND(SUM(T1.ct_amt ) / 10000,2) AS 合同金额,","")}
${if(FIND('订单金额', sIndex)>0," ROUND(SUM(T1.total_amt) / 10000,2) AS 订单金额,","")}
${if(FIND('回款金额', sIndex)>0," ROUND(SUM(T1.clc_amt) / 10000,2) AS 回款金额,","")}
${if(FIND('发货金额', sIndex)>0," ROUND(SUM(T1.deli_amt) / 10000,2) AS 发货金额,","")}
${if(FIND('发货件数', sIndex)>0," ROUND(SUM(T1.ship_num) / 10000,2) AS 发货件数,","")}
${if(FIND('发货瓶数', sIndex)>0," ROUND(SUM(T1.ship_botnum),0) AS 发货瓶数,","")}
${if(FIND('实物库存', sIndex)>0," ROUND(SUM(T1.real_amt) / 10000,2) AS 实物库存,","")}
${if(len(sIndex)>0&& FIND(sIndex,sIndex)>0," 1","")}
FROM
(
-- 销售订单(订单金额)
SELECT
bu_name -- 事业部名称
,region_name -- 大区名称
,office_name -- 办事处名称
,city_unit_name -- 城市单元名称
,province_name -- 省
,city_name -- 市
,pl_name -- 产品线名称
,pi_name -- 品项
,product_name -- 产品名称
,deal_name -- 经销商名称
,src_deal_name -- 子经销商名称
,0 AS ct_amt -- 合同金额
,SUM(COALESCE(d_amt,0)) + SUM(COALESCE(e_amt,0)) + SUM(COALESCE(f_amt,0)) + SUM(COALESCE(fz_amt,0)) + SUM(COALESCE(q_amt,0)) AS total_amt -- 订单金额
,0 AS clc_amt -- 回款金额
,0 AS deli_amt -- 发货金额
,0 AS ship_num -- 发货件数
,0 AS ship_botnum -- 发货瓶数
,0 AS real_amt -- 实物库存
FROM dm.v_ag_sal_order -- 销售订单视图
WHERE order_time >= '${CONCATENATE(sStart_date," 00:00:00.000")}'
AND order_time < '${CONCATENATE(sEnd_date," 00:00:00.000")}'
-- 事业部
${if(len(sBu) == 0,"","and bu_code IN ('"+sBu+"')")}
-- 大区
${if(len(sRegion) == 0,"","and region_code IN ('"+sRegion+"')")}
-- 办事处
${if(len(sOffice) == 0,"","and office_code IN ('"+ sOffice+"')")}
-- 城市单元
${if(len(sCu) == 0,"","and city_unit_code IN ('"+sCu+"')")}
-- 省
${if(len(sProvince) == 0,"","and province_name IN ('"+ sProvince+"')")}
-- 市
${if(len(sCity) == 0,"","and city_name IN ('"+ sCity+"')")}
-- 经销商
${if(sIs_srcdeal == '2',if(len(sDeal) == 0,"","and deal_code IN ('"+ sDeal+"')"),if(len(sDeal) == 0,"","and src_deal_code IN ('"+ sDeal +"')"))}
-- 产品线
${if(len(sPl) == 0,"","and pl_name IN ('"+ sPl+"')")}
-- 品项
${if(len(sPi_name) == 0,"","and pi_name IN ('"+ sPi_name+"')")}
-- 产品
${if(len(sProd) == 0,"","and product_code IN ('"+sProd+"')")}
GROUP BY
bu_name -- 事业部名称
,region_name -- 大区名称
,office_name -- 办事处名称
,city_unit_name -- 城市单元名称
,province_name -- 省
,city_name -- 市
,pl_name -- 产品线名称
,pi_name -- 品项
,product_name -- 产品名称
,deal_name -- 经销商名称
,src_deal_name -- 子经销商名称
UNION ALL
-- 合同汇总
SELECT
bu_name -- 事业部名称
,region_name -- 大区名称
,office_name -- 办事处名称
,city_unit_name -- 城市单元名称
,province_name -- 省
,city_name -- 市
,pl_name -- 产品线名称
,pi_name -- 品项
,product_name -- 产品名称
,deal_name -- 经销商名称
,src_deal_name -- 子经销商名称
,sum(ct_amt) as ct_amt -- 合同金额
,0 AS total_amt -- 订单金额
,0 AS clc_amt -- 回款金额
,0 AS deli_amt -- 发货金额
,0 AS ship_num -- 发货件数
,0 AS ship_botnum-- 发货瓶数
,0 AS real_amt -- 实物库存
FROM dm.v_ag_sal_contract -- 合同表 产品+合同ID
WHERE signed_date >= '${CONCATENATE(sStart_date," 00:00:00.000")}'
AND signed_date < '${CONCATENATE(sEnd_date," 00:00:00.000")}'
-- 事业部
${if(len(sBu) == 0,"","and bu_code IN ('"+sBu+"')")}
-- 大区
${if(len(sRegion) == 0,"","and region_code IN ('"+sRegion+"')")}
-- 办事处
${if(len(sOffice) == 0,"","and office_code IN ('"+ sOffice+"')")}
-- 城市单元
${if(len(sCu) == 0,"","and city_unit_code IN ('"+sCu+"')")}
-- 省
${if(len(sProvince) == 0,"","and province_name IN ('"+ sProvince+"')")}
-- 市
${if(len(sCity) == 0,"","and city_name IN ('"+ sCity+"')")}
-- 经销商
${if(sIs_srcdeal == '2',if(len(sDeal) == 0,"","and deal_code IN ('"+ sDeal+"')"),if(len(sDeal) == 0,"","and src_deal_code IN ('"+ sDeal +"')"))}
-- 产品线
${if(len(sPl) == 0,"","and pl_name IN ('"+ sPl+"')")}
-- 品项
${if(len(sPi_name) == 0,"","and pi_name IN ('"+ sPi_name+"')")}
-- 产品
${if(len(sProd) == 0,"","and product_code IN ('"+sProd+"')")}
GROUP BY
bu_name -- 事业部名称
,region_name -- 大区名称
,office_name -- 办事处名称
,city_unit_name -- 城市单元名称
,province_name -- 省
,city_name -- 市
,pl_name -- 产品线名称
,pi_name -- 品项
,product_name -- 产品名称
,deal_name -- 经销商名称
,src_deal_name -- 子经销商名称
UNION ALL
-- 销售回款
SELECT
bu_name -- 事业部名称
,region_name -- 大区名称
,office_name -- 办事处名称
,city_unit_name -- 城市单元名称
,province_name -- 省
,city_name -- 市
,pl_name -- 产品线名称
,'' AS pi_name -- 品项
,'' AS product_name -- 产品名称
,deal_name -- 经销商名称
,src_deal_name -- 子经销商名称
,0 AS ct_amt -- 合同金额
,0 AS total_amt -- 订单金额
,SUM(COALESCE(clc_amt,0)) AS clc_amt -- 回款金额
,0 AS deli_amt -- 发货金额
,0 AS ship_num -- 发货件数
,0 AS ship_botnum-- 发货瓶数
,0 AS real_amt -- 实物库存
FROM dm.v_ag_sal_collection -- 销售回款
WHERE 1=1
AND bill_date >= '${CONCATENATE(sStart_date," 00:00:00.000")}'
AND bill_date < '${CONCATENATE(sEnd_date," 00:00:00.000")}'
-- 事业部
${if(len(sBu) == 0,"","and bu_code IN ('"+sBu+"')")}
-- 大区
${if(len(sRegion) == 0,"","and region_code IN ('"+sRegion+"')")}
-- 办事处
${if(len(sOffice) == 0,"","and office_code IN ('"+ sOffice+"')")}
-- 城市单元
${if(len(sCu) == 0,"","and city_unit_code IN ('"+sCu+"')")}
-- 省
${if(len(sProvince) == 0,"","and province_name IN ('"+ sProvince+"')")}
-- 市
${if(len(sCity) == 0,"","and city_name IN ('"+ sCity+"')")}
-- 经销商
${if(sIs_srcdeal == '2',if(len(sDeal) == 0,"","and deal_code IN ('"+ sDeal+"')"),if(len(sDeal) == 0,"","and src_deal_code IN ('"+ sDeal +"')"))}
-- 产品线
${if(len(sPl) == 0,"","and pl_name IN ('"+ sPl+"')")}
-- 品项
${if(len(sPi_name) == 0,"","and pi_name IN ('"+ sPi_name+"')")}
-- 产品
${if(len(sProd) == 0,"","and product_code IN ('"+sProd+"')")}
GROUP BY
bu_name -- 事业部名称
,region_name -- 大区名称
,office_name -- 办事处名称
,city_unit_name -- 城市单元名称
,province_name -- 省
,city_name -- 市
,pl_name -- 产品线名称
,deal_name -- 经销商名称
,src_deal_name -- 子经销商名称
UNION ALL
-- 销售发货
SELECT
bu_name -- 事业部名称
,region_name -- 大区名称
,office_name -- 办事处名称
,city_unit_name -- 城市单元名称
,province_name -- 省
,city_name -- 市
,pl_name -- 产品线名称
,pi_name -- 品项
,product_name -- 产品名称
,deal_name -- 经销商名称
,src_deal_name -- 子经销商名称
,0 AS ct_amt -- 合同金额
,0 AS total_amt -- 订单金额
,0 AS clc_amt -- 回款金额
,SUM(deli_amt) AS deli_amt -- 发货金额
,SUM(deli_num / pack_base_num) AS ship_num -- 发货件数
,SUM(pack_base_num) AS ship_botnum-- 发货瓶数
,0 AS real_amt -- 实物库存
FROM dm.v_ag_sal_deliver
WHERE 1=1
AND deli_time >= '${CONCATENATE(sStart_date," 00:00:00.000")}'
AND deli_time < '${CONCATENATE(sEnd_date," 00:00:00.000")}'
-- 事业部
${if(len(sBu) == 0,"","and bu_code IN ('"+sBu+"')")}
-- 大区
${if(len(sRegion) == 0,"","and region_code IN ('"+sRegion+"')")}
-- 办事处
${if(len(sOffice) == 0,"","and office_code IN ('"+ sOffice+"')")}
-- 城市单元
${if(len(sCu) == 0,"","and city_unit_code IN ('"+sCu+"')")}
-- 省
${if(len(sProvince) == 0,"","and province_name IN ('"+ sProvince+"')")}
-- 市
${if(len(sCity) == 0,"","and city_name IN ('"+ sCity+"')")}
-- 经销商
${if(sIs_srcdeal == '2',if(len(sDeal) == 0,"","and deal_code IN ('"+ sDeal+"')"),if(len(sDeal) == 0,"","and src_deal_code IN ('"+ sDeal +"')"))}
-- 产品线
${if(len(sPl) == 0,"","and pl_name IN ('"+ sPl+"')")}
-- 品项
${if(len(sPi_name) == 0,"","and pi_name IN ('"+ sPi_name+"')")}
-- 产品
${if(len(sProd) == 0,"","and product_code IN ('"+sProd+"')")}
GROUP BY
bu_name -- 事业部名称
,region_name -- 大区名称
,office_name -- 办事处名称
,city_unit_name -- 城市单元名称
,province_name -- 省
,city_name -- 市
,pl_name -- 产品线名称
,pi_name -- 品项
,product_name -- 产品名称
,deal_name -- 经销商名称
,src_deal_name -- 子经销商名称
UNION ALL
-- 实物库存
SELECT
bu_name -- 事业部名称
,region_name -- 大区名称
,office_name -- 办事处名称
,city_unit_name -- 城市单元名称
,province_name -- 省
,city_name -- 市
,pl_name -- 产品线名称
,pi_name -- 品项
,product_name -- 产品名称
,deal_name -- 经销商名称
,src_deal_name -- 子经销商名称
,0 AS ct_amt -- 合同金额
,0 AS total_amt -- 订单金额
,0 AS clc_amt -- 回款金额
,0 AS deli_amt -- 发货金额
,0 AS ship_num -- 发货件数
,0 AS ship_botnum-- 发货瓶数
,SUM(end_num * price) AS real_amt -- 实物库存金额
FROM dm.v_ag_sal_deal_stock
WHERE stock_year=left('${sEnd_date}',4)
AND stock_month < right('${sEnd_date}',2)
AND stock_month >= right('${sStart_date}',2)
-- 事业部
${if(len(sBu) == 0,"","and bu_code IN ('"+sBu+"')")}
-- 大区
${if(len(sRegion) == 0,"","and region_code IN ('"+sRegion+"')")}
-- 办事处
${if(len(sOffice) == 0,"","and office_code IN ('"+ sOffice+"')")}
-- 城市单元
${if(len(sCu) == 0,"","and city_unit_code IN ('"+sCu+"')")}
-- 省
${if(len(sProvince) == 0,"","and province_name IN ('"+ sProvince+"')")}
-- 市
${if(len(sCity) == 0,"","and city_name IN ('"+ sCity+"')")}
-- 经销商
${if(sIs_srcdeal == '2',if(len(sDeal) == 0,"","and deal_code IN ('"+ sDeal+"')"),if(len(sDeal) == 0,"","and src_deal_code IN ('"+ sDeal +"')"))}
-- 产品线
${if(len(sPl) == 0,"","and pl_name IN ('"+ sPl+"')")}
-- 品项
${if(len(sPi_name) == 0,"","and pi_name IN ('"+ sPi_name+"')")}
-- 产品
${if(len(sProd) == 0,"","and product_code IN ('"+sProd+"')")}
GROUP BY
bu_name -- 事业部名称
,region_name -- 大区名称
,office_name -- 办事处名称
,city_unit_name -- 城市单元名称
,province_name -- 省
,city_name -- 市
,pl_name -- 产品线名称
,pi_name -- 品项
,product_name -- 产品名称
,deal_name -- 经销商名称
,src_deal_name -- 子经销商名称
)T1
${if(len(sDim)>0," GROUP BY " + sDim ," ")}
-- ======================================
-- 数据更新时间
-- ======================================
-- 存在多个表,取表最近的更新时间
SELECT
CONCAT('数据更新日期:',LEFT(MAX(T.update_time),19)) AS update_time
FROM
(
SELECT MAX(update_time) AS update_time FROM dwr.fact_sal_order -- dm.v_ag_sal_order -- 销售订单视图主表
UNION ALL
SELECT MAX(update_time) AS update_time FROM dwr.fact_sal_contract -- dm.v_ag_sal_contract -- 合同表 产品+合同ID
UNION ALL
SELECT MAX(update_time) AS update_time FROM dwr.fact_sal_collection -- dm.v_ag_sal_collection -- 销售回款
UNION ALL
SELECT MAX(update_time) AS update_time FROM dwr.fact_sal_deliver -- dm.v_ag_sal_deliver -- 销售发货
UNION ALL
SELECT MAX(update_time) AS update_time FROM dwr.fact_sal_dealer_stock -- dm.v_ag_sal_deal_stock -- 实物库存
)T
;
-- ======================================
-- 销售业绩组合表
-- ======================================
-- 使用 dm.dm_sal_indicator_day -- 销售种子指标按日汇总表
-- 20241121更新 与销售业绩月度汇总功能相似,待确认最终报表方案
select
bu.dept_name as bu_name -- 事业部名称
-- ,d.dept_name as p_bu_name -- 产品所属事业部名称
,dmd.secd_dept_name as region_name -- 大区名称
,dmd.thrd_dept_name as office_name -- 办事处名称
,dmd.dept_name as city_unit_name -- 城市单元名称
,max(pv.town_name) as province_name -- 省
,max(cit.town_name) as city_name -- 市
,p.pl_name -- 产品线名称
,p.pi_name -- 品项名称
-- ,p.report_pi_name -- 报表品项
,p.product_name -- 产品名称
,deal.deal_name -- 主经销商名称
,sd.deal_name as src_deal_name -- 子经销商名称
-- p.spec, -- 规格
-- 合同金额
-- 订单金额
-- 回款金额
-- 发货金额
-- 发货件数
-- 发货瓶数
-- 实物库存
FROM
(
SELECT
bu_code
,region_code
,office_code
,city_unit_code
,deal_code
,src_deal_code
,product_code
,province_code
,city_code
,CASE WHEN indi_type IN ('合同','合同计划')
THEN (amt_bu + amt_region + amt_office + amt_city_unit + amt_dealer)
ELSE 0 END AS ct_amt -- 合同金额
,CASE WHEN indi_type IN ('订单','电商订单')
THEN (amt_bu + amt_region + amt_office + amt_city_unit + amt_dealer)
ELSE 0 END AS total_amt -- 订单金额
,CASE WHEN indi_type IN ('回款','电商订单')
THEN (amt_bu + amt_region + amt_office + amt_city_unit + amt_dealer)
ELSE 0 END AS clc_amt -- 回款金额
,CASE WHEN indi_type IN ('发货','费用发货','电商订单')
THEN (amt_bu + amt_region + amt_office + amt_city_unit + amt_dealer)
ELSE 0 END AS deli_amt --发货金额
,CASE WHEN indi_type IN ('发货','费用发货','电商订单')
THEN (num_bu + num_region + num_office + num_city_unit + num_dealer)
ELSE 0 END AS total_num -- 发货瓶数
-- 发货件数=瓶数/pack_base_num
-- 发货瓶数?
,CASE WHEN indi_type IN ('实物库存') -- 使用金额
THEN (num_bu + num_region + num_office + num_city_unit + num_dealer)
ELSE 0 END AS real_amt -- 实物库存
-- 在途库存
-- 实物库存
-- 已填仓未下单
-- 未下单往来余额
-- 未发货
-- 融资未填仓
-- 费用余额
-- 其他库存
FROM dm.dm_sal_indicator_day -- 销售种子指标按日汇总表
WHERE indi_type NOT LIKE '%目标%'
-- 统计日期
AND stat_date >= '${CONCATENATE(sStart_date," 00:00:00")}'
AND stat_date <= '${CONCATENATE(sEnd_date," 00:00:00")}'
${if(len(sIndex) == 0,"","and indi_type IN ('"+sIndex+"')")}
-- 事业部
${if(len(sBu) == 0,"","and bu_code IN ('"+sBu+"')")}
-- 大区
${if(len(sRegion) == 0,"","and region_code IN ('"+ sRegion+"')")}
-- 办事处
${if(len(sOffice) == 0,"","and office_code IN ('"+ sOffice+"')")}
-- 城市单元
${if(len(sCu) == 0,"","and city_unit_code IN ('"+sCu+"')")}
-- 产品
${if(len(sProduct) == 0,"","and product_code IN ('"+ sProduct +"')")}
-- 产品线
${if(len(sPl_name) == 0,"","and p.pl_name IN ('"+ sPl_name +"')")}
-- 子主经销商
${if(sSub_main == '2',if(len(sDeal) == 0,"","and deal_code IN ('"+ sDeal+"')"),if(len(sDeal) == 0,"","and src_deal_code IN ('"+ sDeal +"')"))}
)a
left join dwr.dim_product p on a.product_code=p.product_code
left join dwr.dim_department dmd on a.city_unit_code=dmd.dept_code
left join dwr.dim_department bu on a.bu_code=bu.dept_code
left join dwr.dim_department d on p.bu_code=d.dept_code
left join dwr.dim_dealer deal on a.deal_code=deal.deal_code
left join dwr.dim_dealer sd on a.src_deal_code=sd.deal_code
left join dwr.dim_area pv on a.province_code=pv.town_code
left join dwr.dim_area cit on a.city_code=cit.town_code
left join sdi_xdata.mdm_dim_sorted st on a.region_code=st.sorted_value and st.sorted_type='大区'
where exists (
select
1
from
dm.dm_bi_user_permisson
where
bi_user = '${fine_username}'
and per_model IN ('all','sal')
and (
is_all = 1
OR per_code = a.bu_code
OR per_code = a.region_code
OR per_code = a.office_code
OR per_code = a.city_unit_code
)
)
-- 品项
${if(len(sPi_name) == 0,"","and p.pi_name IN ('"+ sPi_name+"')")}
-- 省
${if(len(sProvince) == 0,"","and pv.province_name IN ('"+ sProvince+"')")}
-- 市
${if(len(sCity) == 0,"","and cit.city_name IN ('"+ sCity+"')")}
order by nvl(st.sorted_no,99)
-- SQL分页:
-- limit ${pPage_rows} offset (${pJump_page}-1)*${pPage_rows}