200 lines
7.3 KiB
SQL
200 lines
7.3 KiB
SQL
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 ${pPage_rows} offset (${pJump_page}-1)*${pPage_rows}
|
|
|
|
|
|
|
|
|
|
-- 数据更新时间:
|
|
--
|
|
|
|
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
|
|
; |