langjiu-project/FineReport/销售主题/报表/终端奖励对账.sql

199 lines
7.3 KiB
MySQL
Raw Normal View History

2024-11-24 15:21:04 +08:00
with base_data as (
select
to_char(a.stat_date,'yyyy') as stat_year,
to_char(a.stat_date,'mm') as stat_mon,
a.stat_date,
case when a.indi_type='现金分润'
then (case when dmp.pl_name='兼香龙马' and dmp.product_name like '%郎牌·%马特%'
then '郎牌·马特2.0版终端月度奖励'
when dmp.pl_name='兼香龙马'
then '兼香龙马终端月度奖励'
when dmp.pl_name='兼香顺品'
then '兼香顺品终端分润活动奖励'
end
)
when a.indi_type='消费者红包'
then (case when dmp.pl_name='兼香龙马' and dmp.product_name like '%郎牌·%马特%'
then '郎牌·马特2.0版消费者红包奖励'
when dmp.pl_name='红花郎'
then '红花郎消费者红包奖励'
else dmp.pl_name||'消费者红包月度奖励'
end
)
else '终端销售奖月度销售奖励' end as indi_type,
d.fist_dept_code as bu_code,
max(d.fist_dept_name) as bu_name,
d.secd_dept_code as region_code,
max(d.secd_dept_name) as region_name,
d.thrd_dept_code as office_code,
max(d.thrd_dept_name) as office_name,
cust.deal_code,
cust.deal_name,
dmp.pl_name,
nvl(p.pi_name,dmp.pi_name) as pi_name,
a.product_code,
dmp.product_name,
sum(a.bottle_num) as bottle_num,
sum(a.amt) as amt
from dm.dm_mak_indicator_day a
left join dwr.dim_product dmp on a.product_code = dmp.product_code
left join sdi_oth.product_pi_special p on a.product_code=p.product_code
left join dwr.dim_department d on d.dept_code = nvl(a.city_unit_code,dmp.bu_code)
left join dwr.dim_dealer cust on a.src_deal_code = cust.deal_code
where indi_type in ('终端销售奖','现金分润','消费者红包')
and a.stat_date >= timestamp'${CONCATENATE(sStart_date," 00:00:00.000")}'
AND a.stat_date < timestamp '${CONCATENATE(sEnd_date," 00:00:00.000")}'
group by
to_char(a.stat_date,'yyyy'),
to_char(a.stat_date,'mm'),
a.stat_date,
case when a.indi_type='现金分润'
then (case when dmp.pl_name='兼香龙马' and dmp.product_name like '%郎牌·%马特%'
then '郎牌·马特2.0版终端月度奖励'
when dmp.pl_name='兼香龙马'
then '兼香龙马终端月度奖励'
when dmp.pl_name='兼香顺品'
then '兼香顺品终端分润活动奖励'
end
)
when a.indi_type='消费者红包'
then (case when dmp.pl_name='兼香龙马' and dmp.product_name like '%郎牌·%马特%'
then '郎牌·马特2.0版消费者红包奖励'
when dmp.pl_name='红花郎'
then '红花郎消费者红包奖励'
else dmp.pl_name||'消费者红包月度奖励'
end
)
else '终端销售奖月度销售奖励' end,
d.fist_dept_code,
d.secd_dept_code,
d.thrd_dept_code,
cust.deal_code,
cust.deal_name,
dmp.pl_name,
nvl(p.pi_name,dmp.pi_name),
a.product_code,
dmp.product_name
union all
select
to_char(a.rebate_time,'yyyy') as stat_year,
to_char(a.rebate_time,'mm') as stat_mon,
date_trunc('day',a.rebate_time) as stat_date,
'终端销售奖月度销售奖励' as indi_type,
d.fist_dept_code as bu_code,
max(d.fist_dept_name) as bu_name,
d.secd_dept_code as region_code,
max(d.secd_dept_name) as region_name,
d.thrd_dept_code as office_code,
max(d.thrd_dept_name) as office_name,
cust.deal_code,
cust.deal_name,
dmp.pl_name,
nvl(p.pi_name,dmp.pi_name) as pi_name,
a.product_code,
dmp.product_name,
count(a.bottle_code) as bottle_num,
sum(a.amt) as amt
from dwi.dwi_mak_rebate_person a
left join dwr.dim_product dmp on a.product_code=dmp.product_code
left join sdi_oth.product_pi_special p on a.product_code=p.product_code
left join (select
deal_code,
pl_name,
max(city_unit_code) as city_unit_code
from dwr.dim_dealer_administer
where enabled_status=1
group by deal_code,pl_name) dda on a.deal_code=dda.deal_code and dmp.pl_name=dda.pl_name
left join dwr.dim_department d on d.dept_code = nvl(dda.city_unit_code,a.bu_code)
left join dwr.dim_dealer cust on a.deal_code = cust.deal_code
where a.trade_direction='收入'
and a.bill_type='分润'
and rebate_time >= timestamp '${CONCATENATE(sStart_date," 00:00:00.000")}'
AND rebate_time < timestamp '${CONCATENATE(sEnd_date," 00:00:00.000")}'
group by
to_char(a.rebate_time,'yyyy'),
to_char(a.rebate_time,'mm'),
date_trunc('day',a.rebate_time),
d.fist_dept_code,
d.secd_dept_code,
d.thrd_dept_code,
cust.deal_code,
cust.deal_name,
dmp.pl_name,
nvl(p.pi_name,dmp.pi_name) ,
a.product_code,
dmp.product_name
)
SELECT
stat_year -- 统计年
,stat_mon -- 统计月
,stat_date -- 统计日期
,indi_type -- 账单类型
,bu_code -- 事业部编码
,bu_name -- 事业部
,region_code -- 大区编码
,region_name -- 大区名称
,office_code -- 办事处编码
,office_name -- 办事处名称
,deal_code -- 经销商编码
,deal_name -- 经销商名称
,pl_name -- 产品线名称
,pi_name -- 品项
,product_code -- 产品编码
,product_name -- 产品名称
,bottle_num -- 瓶数
,amt -- 金额
FROM base_data a
-- 排序
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(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(sPl_name) == 0,"","and pl_name IN ('"+ sPl_name+"')")}
-- 经销商
${if(len(sDeal) == 0,"",if(REGEXP(sDeal,"^[0-9]+$"),"and deal_code = '"+sDeal+"'","and deal_name like '%"+sDeal+"%'"))}
-- 账单类型
${if(len(sIndi_type) == 0,"","and indi_type IN ('"+ sIndi_type +"')")}
ORDER BY nvl(st.sorted_no,99)
limit ${sPage_rows} offset (${pJump_page}-1)*${sPage_rows}
2024-11-24 15:21:04 +08:00
-- 数据更新时间:
--
SELECT
CONCAT('数据更新时间:',LEFT(MAX(T.update_time),19)) AS update_time
FROM
(
SELECT MAX(update_time) AS update_time FROM dm.dm_mak_indicator_day
UNION ALL
SELECT MAX(update_time) AS update_time FROM dwi.dwi_mak_rebate_person
)T
;