Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Function: smurds.fnc_init_bi_f_loyal_monthly_result(date, text)
- -- DROP FUNCTION smurds.fnc_init_bi_f_loyal_monthly_result(date, text);
- CREATE OR REPLACE FUNCTION smurds.fnc_init_bi_f_loyal_monthly_result(paramdate date, paraminit text)
- RETURNS text AS
- $BODY$
- declare
- lvitext text;
- lvperi_from int := 0;
- lvperi_to int := 0;
- lvdate_from DATE;
- lvdate_to DATE;
- lvcounter int := 0;
- begin
- lvperi_from = TO_CHAR(paramdate,'YYYYMM')::INT;
- lvdate_from = (lvperi_from||'01')::DATE;
- lvdate_to = LAST_DAY(lvdate_from);
- lvperi_to = TO_CHAR(paramdate + '1 month'::INTERVAL,'YYYYMM')::INT;
- TRUNCATE stg_f_loyal_monthly_result_candidate;
- TRUNCATE stg_f_loyal_monthly_result_so;
- TRUNCATE stg_f_loyal_monthly_result_delv;
- TRUNCATE stg_f_loyal_monthly_result_inv;
- TRUNCATE stg_f_loyal_monthly_result_base;
- TRUNCATE stg_f_loyal_monthly_result_base_result;
- TRUNCATE stg_f_loyal_monthly_result_base_frontage;
- TRUNCATE stg_f_loyal_monthly_result_ach;
- --++FS9956
- /*
- INSERT INTO stg_f_loyal_monthly_result_so
- SELECT t1.vbeln, t1.kunnr, t3.kunnr_cm,
- SUM(CASE WHEN t1.auart <> 'ZS23' THEN t2.kzwi2 ELSE 0 END) value_so,
- SUM(CASE WHEN t1.auart = 'ZS23' THEN t2.kzwi2 * -1 ELSE 0 END) value_so_return,
- SUM(CASE WHEN m2.kdgrp IS NOT NULL AND t1.auart <> 'ZS23' THEN t2.kzwi2 ELSE 0 END) pd_value_so,
- SUM(CASE WHEN m2.kdgrp IS NOT NULL AND t1.auart = 'ZS23' THEN t2.kzwi2 * -1 ELSE 0 END) pd_value_so_return
- FROM bi_f_so_detail t2
- INNER JOIN
- (
- SELECT t1.vbeln, t1.kunnr, t1.auart
- FROM bi_f_so_header t1
- INNER JOIN
- (
- SELECT *
- FROM smusap_pl.zta_x_lyt_canddt t2
- WHERE t2.joindt <> '9999-12-31'
- AND ((t2.datab <= lvdate_to AND t2.datbi >= lvdate_to) OR ( t2.datab = '9999-12-31' ) )
- ) t2 ON t2.kunnr = t1.kunnr AND t2.joindt <= t1.erdat_header
- --WHERE t1.auart IN ('ZS23', 'ZS01', 'ZS06', 'ZS07')
- WHERE t1.auart IN ('ZS01', 'ZS06', 'ZS07', 'ZS39', 'ZS12', 'ZS49', 'ZS43', 'ZS61','ZS23')
- AND t1.erdat_header BETWEEN lvdate_from AND lvdate_to
- GROUP BY t1.vbeln, t1.kunnr, t1.auart
- ) t1 ON t2.vbeln = t1.vbeln
- LEFT JOIN smusap_pl.zta_x_lyt_tgt m1 ON m1.kunnr = t1.kunnr AND lvdate_from BETWEEN m1.datab AND m1.datbi
- LEFT JOIN smusap_pl.zta_x_lyt_drive m2 ON m2.kdgrp = m1.kdgrp
- AND (m2.matnr = t2.matnr OR m2.mvgr2 = t2.mvgr2 OR m2.prodh = t2.prodh)
- LEFT JOIN smusap_pl.zta_s_lyt_grpcm t3 ON t3.kunnr = t1.kunnr
- WHERE t2.period_mcsi BETWEEN lvperi_from AND lvperi_to
- AND t2.abgru = '-1'
- GROUP BY t1.vbeln, t1.kunnr, t3.kunnr_cm;
- */
- --++FS10665
- INSERT INTO stg_f_loyal_monthly_result_candidate
- SELECT m0.kunnr, MAX(m0.joindt), MAX((TO_CHAR(m0.joindt,'YYYYMM')||'01')::DATE) joindt_01,
- MAX(m0.vkorg) AS vkorg , MAX(m0.vkbur) AS vkbur,
- --MAX(m0.exclude_vis) AS hanger
- '' hanger
- FROM smusap_pl.zta_x_lyt_canddt m0
- WHERE m0.joindt <> '9999-12-31'
- AND ((m0.datab <= lvdate_to AND m0.datbi >= lvdate_to) OR ( m0.datab = '9999-12-31' ) )
- GROUP BY m0.kunnr;
- INSERT INTO stg_f_loyal_monthly_result_so
- SELECT t1.vbeln, t1.kunnr, t3.kunnr_cm
- FROM bi_f_so_header t1
- INNER JOIN stg_f_loyal_monthly_result_candidate m0 ON m0.kunnr = t1.kunnr AND m0.joindt_01 <= t1.erdat_header
- LEFT JOIN smusap_pl.zta_s_lyt_grpcm t3 ON t3.kunnr = t1.kunnr
- --WHERE t1.auart IN ('ZS23', 'ZS01', 'ZS06', 'ZS07')
- WHERE t1.auart IN ('ZS01', 'ZS06', 'ZS07', 'ZS39', 'ZS12', 'ZS49', 'ZS43', 'ZS61','ZS23','ZS70','ZS71')
- AND t1.erdat_header BETWEEN lvdate_from AND lvdate_to
- GROUP BY t1.vbeln, t1.kunnr, t3.kunnr_cm;
- --++FS10665
- INSERT INTO stg_f_loyal_monthly_result_delv
- SELECT COALESCE(t3.kunnr_cm, t1.kunnr) kunnr, SUM(t1.delv_value) delv_value, SUM(t1.delv_return_value) delv_return_value,
- MAX(m1.target) target,
- --MAX(m2.target) AS pd_target,
- MAX(m1.targetpd) AS pd_target,
- SUM( CASE WHEN m2.kdgrp IS NOT NULL THEN t1.delv_value ELSE 0 END) pd_delv_value,
- SUM( CASE WHEN m2.kdgrp IS NOT NULL THEN t1.delv_return_value ELSE 0 END) pd_delv_return_value
- FROM
- (
- SELECT t2.kunnr, t1.matnr, t1.mvgr2, t1.prodh,
- SUM(CASE WHEN t1.lfart <> 'ZD23' THEN t1.value_base_unit * (t1.qty_delv_base_unit - COALESCE(t1.qty_pod_base_unit,0)) ELSE 0 END) AS delv_value,
- SUM(CASE WHEN t1.lfart = 'ZD23' THEN t1.value_base_unit * (t1.qty_delv_base_unit - COALESCE(t1.qty_pod_base_unit,0)) ELSE 0 END) AS delv_return_value
- FROM bi_f_delv_detail t1
- INNER JOIN stg_f_loyal_monthly_result_so t2 ON t2.vbeln = t1.vgbel
- LEFT JOIN bi_f_ic_material m1 ON m1.matnr = t1.matnr
- WHERE t1.period_mcsi BETWEEN lvperi_from AND lvperi_to
- AND m1.matnr IS NULL
- GROUP BY t2.kunnr, t1.matnr, t1.mvgr2, t1.prodh
- ) t1
- LEFT JOIN smusap_pl.zta_x_lyt_tgt m1 ON m1.kunnr = t1.kunnr AND lvdate_from BETWEEN m1.datab AND m1.datbi
- LEFT JOIN smusap_pl.zta_x_lyt_drive m2 ON m2.kdgrp = m1.kdgrp
- AND (m2.matnr = t1.matnr OR m2.mvgr2 = t1.mvgr2 OR m2.prodh = t1.prodh)
- LEFT JOIN smusap_pl.zta_s_lyt_grpcm t3 ON t3.kunnr = t1.kunnr
- GROUP BY COALESCE(t3.kunnr_cm, t1.kunnr);
- INSERT INTO stg_f_loyal_monthly_result_inv
- SELECT COALESCE(t3.kunnr_cm, t1.kunnr) kunnr, SUM(t1.bill_value) bill_value, SUM(t1.bill_return_value) bill_return_value,
- MAX(m1.target) target, MAX(m1.targetpd) AS pd_target,
- SUM( CASE WHEN m2.kdgrp IS NOT NULL THEN t1.bill_value ELSE 0 END) pd_bill_value,
- SUM( CASE WHEN m2.kdgrp IS NOT NULL THEN t1.bill_return_value ELSE 0 END) pd_bill_return_value
- FROM
- (
- SELECT t2.kunnr, t1.matnr, t1.mvgr2, t1.prodh,
- SUM(CASE WHEN t1.fkart <> 'ZI23' THEN t1.kzwi2 ELSE 0 END) AS bill_value,
- SUM(CASE WHEN t1.fkart = 'ZI23' THEN t1.kzwi2 ELSE 0 END) AS bill_return_value
- FROM bi_f_billing_detail t1
- INNER JOIN stg_f_loyal_monthly_result_so t2 ON t2.vbeln = t1.aubel
- LEFT JOIN bi_f_ic_material m1 ON m1.matnr = t1.matnr
- WHERE t1.fksto <> 'X' and t1.uepos in (0,-1) --and i.uepos in (0,-1) and i.spart_customer in ('88')
- AND t1.fkart NOT IN ('ZI91' , 'ZI92')
- AND t1.period_mcsi BETWEEN lvperi_from AND lvperi_to
- AND m1.matnr IS NULL
- GROUP BY t2.kunnr, t1.matnr, t1.mvgr2, t1.prodh
- ) t1
- LEFT JOIN smusap_pl.zta_x_lyt_tgt m1 ON m1.kunnr = t1.kunnr AND lvdate_from BETWEEN m1.datab AND m1.datbi
- LEFT JOIN smusap_pl.zta_x_lyt_drive m2 ON m2.kdgrp = m1.kdgrp
- AND (m2.matnr = t1.matnr OR m2.mvgr2 = t1.mvgr2 OR m2.prodh = t1.prodh)
- LEFT JOIN smusap_pl.zta_s_lyt_grpcm t3 ON t3.kunnr = t1.kunnr
- GROUP BY COALESCE(t3.kunnr_cm, t1.kunnr);
- INSERT INTO stg_f_loyal_monthly_result_base
- SELECT t1.kunnr, t1.bill_value, t1.bill_return_value, t1.base_j, t1.base_q, FLOOR(t1.base_j / COALESCE(NULLIF(m2.qty1 * m2.qty2,0),1)) AS base_k
- FROM
- (
- SELECT t1.kunnr, t1.bill_value, t1.bill_return_value, t1.base_j, FLOOR(t1.base_j / COALESCE(NULLIF(m2.qty1 * m2.qty2,0),1)) AS base_q
- FROM
- (
- SELECT t1.kunnr, t1.bill_value, t1.bill_return_value, FLOOR(( t1.bill_value - t1.bill_return_value) / COALESCE(NULLIF(m1.valcd,0),1)) AS base_j
- FROM stg_f_loyal_monthly_result_inv t1
- LEFT JOIN smusap_pl.zta_x_lyt_valcrd m1 ON m1.card = 'J' AND lvperi_from BETWEEN m1.datab AND m1.datbi
- ) t1
- LEFT JOIN smusap_pl.zta_x_lyt_card m2 ON m2.card1 = 'J' AND m2.card2 = 'Q' AND lvperi_from BETWEEN m2.datab AND m2.datbi
- ) t1
- LEFT JOIN smusap_pl.zta_x_lyt_card m2 ON m2.card1 = 'J' AND m2.card2 = 'K' AND lvperi_from BETWEEN m2.datab AND m2.datbi;
- INSERT INTO stg_f_loyal_monthly_result_base_result
- SELECT t1.kunnr, t1.base_j, t1.base_q, t1.base_k,
- CASE WHEN m11.valty = 'P' THEN FLOOR(m11.valcd/100::numeric * t1.base_j) ELSE m11.valcd END AS target_j,
- CASE WHEN m12.valty = 'P' THEN FLOOR(m12.valcd/100::numeric * t1.base_q) ELSE m12.valcd END AS target_q,
- CASE WHEN m13.valty = 'P' THEN FLOOR(m13.valcd/100::numeric * t1.base_k) ELSE m13.valcd END AS target_k,
- CASE WHEN m21.valty = 'P' THEN FLOOR(m21.valcd/100::numeric * t1.base_j) ELSE m21.valcd END AS frontage_j,
- CASE WHEN m22.valty = 'P' THEN FLOOR(m22.valcd/100::numeric * t1.base_q) ELSE m22.valcd END AS frontage_q,
- CASE WHEN m23.valty = 'P' THEN FLOOR(m23.valcd/100::numeric * t1.base_k) ELSE m23.valcd END AS frontage_k,
- CASE WHEN m31.valty = 'P' THEN FLOOR(m31.valcd/100::numeric * t1.base_j) ELSE m31.valcd END AS pd_j,
- CASE WHEN m32.valty = 'P' THEN FLOOR(m32.valcd/100::numeric * t1.base_q) ELSE m32.valcd END AS pd_q,
- CASE WHEN m33.valty = 'P' THEN FLOOR(m33.valcd/100::numeric * t1.base_k) ELSE m33.valcd END AS pd_k
- FROM stg_f_loyal_monthly_result_base t1
- LEFT JOIN smusap_pl.zta_x_lyt_hitbns m11 ON m11.bnsty = 'T' AND m11.card = 'J' AND lvdate_from BETWEEN m11.datab AND m11.datbi
- LEFT JOIN smusap_pl.zta_x_lyt_hitbns m12 ON m12.bnsty = 'T' AND m12.card = 'Q' AND lvdate_from BETWEEN m12.datab AND m12.datbi
- LEFT JOIN smusap_pl.zta_x_lyt_hitbns m13 ON m13.bnsty = 'T' AND m13.card = 'K' AND lvdate_from BETWEEN m13.datab AND m13.datbi
- LEFT JOIN smusap_pl.zta_x_lyt_hitbns m21 ON m21.bnsty = 'F' AND m21.card = 'J' AND lvdate_from BETWEEN m21.datab AND m21.datbi
- LEFT JOIN smusap_pl.zta_x_lyt_hitbns m22 ON m22.bnsty = 'F' AND m22.card = 'Q' AND lvdate_from BETWEEN m22.datab AND m22.datbi
- LEFT JOIN smusap_pl.zta_x_lyt_hitbns m23 ON m23.bnsty = 'F' AND m23.card = 'K' AND lvdate_from BETWEEN m23.datab AND m23.datbi
- LEFT JOIN smusap_pl.zta_x_lyt_hitbns m31 ON m31.bnsty = 'P' AND m31.card = 'J' AND lvdate_from BETWEEN m31.datab AND m31.datbi
- LEFT JOIN smusap_pl.zta_x_lyt_hitbns m32 ON m32.bnsty = 'P' AND m32.card = 'Q' AND lvdate_from BETWEEN m32.datab AND m32.datbi
- LEFT JOIN smusap_pl.zta_x_lyt_hitbns m33 ON m33.bnsty = 'P' AND m33.card = 'K' AND lvdate_from BETWEEN m33.datab AND m33.datbi;
- /*
- - Flag frontage
- cek survey terakhir yang dilakukan pada customer untuk bulan yang dihitung dari table MY_SFAMD_T_SUMMARY_DISPLAY.
- Select cust_id, max(doc_date) doc_date from smusap.MY_SFAMD_T_SUMMARY_DISPLAY where to_char(doc_date,’YYYYMM’) = periode yang dihitung.
- dari hasil query di atas ambil jawaban untuk survey pada tanggal terakhir di survey setiap customer dimana disp_id in (maintain m_parameter) dan element_id (maintain m_parameter).
- Value_achieve dari hasil query ini harus bernilai 1 semua.
- Parameter ambil di MY_SFAMD_M_PARAMETER
- 1. PARAMETER_ID= ‘loyalty_display_id’ untuk parameter display_id
- 2. PARAMETER_ID= ‘loyalty_element_id’untuk parameter element_id
- Jika kondisi diatas terpenuh maka isi field ini dengan Y else N. jika tidak ditemui hasil survey otomatis N.
- */
- --++FS10665 loyalty_display_element_id ke loyalty_frontage_display_element_id
- INSERT INTO stg_f_loyal_monthly_result_base_frontage
- SELECT t1.kunnr, CASE WHEN t1.value_achieve = 1 THEN 'Y' ELSE 'N' END AS flag_frontage, param_type
- FROM
- (
- SELECT COALESCE(t3.kunnr_cm, t1.kunnr) kunnr, param_type, MIN(t1.value_achieve) value_achieve
- FROM
- (
- SELECT LPAD(t1.cust_id,10,'0') kunnr, m1.param_type, t1.doc_date, t1.disp_id, t1.element_id, t1.value_achieve
- FROM smusap.my_sfamd_t_summary_display t1
- --INNER JOIN smusap.my_sfamd_m_parameter m1 ON m1.parameter_id = 'loyalty_display_id' AND t1.disp_id = m1.value
- --INNER JOIN smusap.my_sfamd_m_parameter m1 ON m1.parameter_id = 'loyalty_element_id' AND t1.element_id = m1.value
- INNER JOIN
- (
- SELECT param_type, idx[1] AS disp_id, idx[2] AS element_id
- FROM
- (
- SELECT param_type, m1.value, regexp_split_to_array(m1.value,'-') idx
- FROM
- (
- --loyalty_display_element_id => Layak bayar
- --loyalty_frontage_display_element_id => Frontage
- SELECT CASE WHEN parameter_id = 'loyalty_display_element_id' THEN 'LB' ELSE 'FT' END AS param_type,
- m1.value
- FROM smusap.my_sfamd_m_parameter m1
- WHERE m1.parameter_id IN ('loyalty_display_element_id', 'loyalty_frontage_display_element_id')
- ) m1
- ) m1
- GROUP BY param_type, idx[1], idx[2]
- ) m1 ON t1.disp_id = m1.disp_id AND t1.element_id = m1.element_id
- INNER JOIN
- (
- SELECT t1.cust_id, MAX(t1.doc_date) AS doc_date
- FROM smusap.my_sfamd_t_summary_display t1
- WHERE t1.doc_date BETWEEN lvdate_from AND lvdate_to
- GROUP BY t1.cust_id
- ) AS t0 ON t0.cust_id = t1.cust_id AND t0.doc_date = t1.doc_date
- WHERE t1.doc_date BETWEEN lvdate_from AND lvdate_to
- ) t1
- LEFT JOIN smusap_pl.zta_s_lyt_grpcm t3 ON t3.kunnr = t1.kunnr
- GROUP BY COALESCE(t3.kunnr_cm, t1.kunnr), param_type
- ) t1;
- /*
- INSERT INTO stg_f_loyal_monthly_result_ach
- SELECT t1.kunnr, t1.flag_target, t1.flag_frontage, t1.flag_pd,
- t1.flag_layak_bayar,
- t1.base_j, t1.target_j, t1.frontage_j, t1.pd_j,
- t1.base_q, t1.target_q, t1.frontage_q, t1.pd_q,
- t1.base_k, t1.target_k, t1.frontage_k, t1.pd_k,
- t1.total_j, t1.total_q,
- CASE WHEN t1.flag_layak_bayar = 'Y' THEN
- CASE WHEN t1.flag_target = 'Y' THEN FLOOR(t1.total_q / m2.qty1* m2.qty2) + t1.target_k ELSE 0 END +
- CASE WHEN t1.flag_frontage = 'Y' THEN t1.frontage_k ELSE 0 END +
- CASE WHEN t1.flag_pd = 'Y' THEN t1.pd_k ELSE 0 END
- ELSE 0 END AS total_k
- FROM
- (
- SELECT t1.kunnr, t1.flag_target, t1.flag_frontage, t1.flag_pd,
- t1.flag_layak_bayar,
- t1.base_j, t1.target_j, t1.frontage_j, t1.pd_j,
- t1.base_q, t1.target_q, t1.frontage_q, t1.pd_q,
- t1.base_k, t1.target_k, t1.frontage_k, t1.pd_k,
- t1.total_j,
- CASE WHEN t1.flag_layak_bayar = 'Y' THEN
- CASE WHEN t1.flag_target = 'Y' THEN FLOOR(t1.total_j / m2.qty1* m2.qty2) + t1.target_q ELSE 0 END +
- CASE WHEN t1.flag_frontage = 'Y' THEN t1.frontage_q ELSE 0 END +
- CASE WHEN t1.flag_pd = 'Y' THEN t1.pd_q ELSE 0 END
- ELSE 0 END AS total_q
- FROM
- (
- SELECT t1.kunnr, t1.flag_target, t1.flag_frontage, t1.flag_pd,
- t1.flag_layak_bayar,
- t2.base_j, t2.target_j, t2.frontage_j, t2.pd_j,
- t2.base_q, t2.target_q, t2.frontage_q, t2.pd_q,
- t2.base_k, t2.target_k, t2.frontage_k, t2.pd_k,
- CASE WHEN t1.flag_layak_bayar = 'Y' THEN
- CASE WHEN t1.flag_target = 'Y' THEN t2.base_j + t2.target_j ELSE 0 END +
- CASE WHEN t1.flag_frontage = 'Y' THEN t2.frontage_j ELSE 0 END +
- CASE WHEN t1.flag_pd = 'Y' THEN t2.pd_j ELSE 0 END
- ELSE 0 END AS total_j
- FROM
- (
- SELECT t1.kunnr, t1.flag_target, t1.flag_frontage, t1.flag_pd,
- CASE WHEN t1.flag_target = 'Y' AND
- t1.flag_frontage = 'Y' AND
- t1.flag_pd = 'Y' THEN 'Y' ELSE 'N' END flag_layak_bayar
- FROM
- (
- SELECT t1.kunnr,
- CASE WHEN t1.bill_value - t1.bill_return_value >= t1.target THEN 'Y' ELSE 'N' END flag_target,
- CASE WHEN t2.flag_frontage = 'Y' THEN 'Y' ELSE 'N' END AS flag_frontage,
- CASE WHEN t1.pd_bill_value - t1.pd_target >= t1.target THEN 'Y' ELSE 'N' END flag_pd
- FROM stg_f_loyal_monthly_result_inv t1
- LEFT JOIN stg_f_loyal_monthly_result_base_frontage t2 ON t2.kunnr = t1.kunnr
- ) t1
- ) t1
- LEFT JOIN stg_f_loyal_monthly_result_base_result t2 ON t2.kunnr = t1.kunnr
- ) t1
- LEFT JOIN smusap_pl.zta_x_lyt_card m2 ON m2.card1 = 'J' AND m2.card2 = 'Q' AND lvdate_from BETWEEN m2.datab AND m2.datbi
- ) t1
- LEFT JOIN smusap_pl.zta_x_lyt_card m2 ON m2.card1 = 'Q' AND m2.card2 = 'K' AND lvdate_from BETWEEN m2.datab AND m2.datbi;
- */
- INSERT INTO stg_f_loyal_monthly_result_ach
- SELECT t1.kunnr, t1.flag_target, t1.flag_frontage, t1.flag_pd,
- t1.flag_layak_bayar,
- t2.base_j, t2.target_j, t2.frontage_j, t2.pd_j,
- t2.base_q, t2.target_q, t2.frontage_q, t2.pd_q,
- t2.base_k, t2.target_k, t2.frontage_k, t2.pd_k,
- CASE WHEN t1.flag_layak_bayar = 'Y' THEN
- CASE WHEN t1.flag_target = 'Y' THEN t2.base_j + t2.target_j ELSE t2.base_j END +
- CASE WHEN t1.flag_frontage = 'Y' THEN t2.frontage_j ELSE 0 END +
- CASE WHEN t1.flag_pd = 'Y' THEN t2.pd_j ELSE 0 END
- ELSE 0 END AS total_j,
- CASE WHEN t1.flag_layak_bayar = 'Y' THEN
- CASE WHEN t1.flag_target = 'Y' THEN t2.base_q + t2.target_q ELSE t2.base_q END +
- CASE WHEN t1.flag_frontage = 'Y' THEN t2.frontage_q ELSE 0 END +
- CASE WHEN t1.flag_pd = 'Y' THEN t2.pd_q ELSE 0 END
- ELSE 0 END AS total_q,
- CASE WHEN t1.flag_layak_bayar = 'Y' THEN
- CASE WHEN t1.flag_target = 'Y' THEN t2.base_k + t2.target_k ELSE t2.base_k END +
- CASE WHEN t1.flag_frontage = 'Y' THEN t2.frontage_k ELSE 0 END +
- CASE WHEN t1.flag_pd = 'Y' THEN t2.pd_k ELSE 0 END
- ELSE 0 END AS total_k
- FROM
- (
- SELECT t1.kunnr, t1.flag_target, t1.flag_frontage, t1.flag_pd,
- --++FS9956
- /*
- CASE WHEN t1.flag_target = 'Y' AND
- t1.flag_frontage = 'Y' AND
- t1.flag_pd = 'Y' THEN 'Y' ELSE 'N' END flag_layak_bayar
- */
- --CASE WHEN t1.flag_frontage = 'Y' OR m0.hanger = 'X' THEN 'Y' ELSE 'N' END flag_layak_bayar
- CASE WHEN t1.flag_layak_bayar = 'Y' OR m0.hanger = 'X' THEN 'Y' ELSE 'N' END flag_layak_bayar
- FROM
- (
- SELECT t1.kunnr,
- CASE WHEN t1.bill_value - t1.bill_return_value >= t1.target THEN 'Y' ELSE 'N' END flag_target,
- CASE WHEN t21.flag_frontage = 'Y' THEN 'Y' ELSE 'N' END AS flag_frontage,
- CASE WHEN t22.flag_frontage = 'Y' THEN 'Y' ELSE 'N' END AS flag_layak_bayar,
- --CASE WHEN t1.pd_bill_value - t1.pd_target >= t1.target THEN 'Y' ELSE 'N' END flag_pd
- CASE WHEN t1.pd_bill_value - t1.pd_bill_return_value >= t1.pd_target THEN 'Y' ELSE 'N' END flag_pd
- FROM stg_f_loyal_monthly_result_inv t1
- --'LB' ELSE 'FT' END AS param_type,
- LEFT JOIN stg_f_loyal_monthly_result_base_frontage t21 ON t21.kunnr = t1.kunnr AND t21.param_type = 'FT'
- LEFT JOIN stg_f_loyal_monthly_result_base_frontage t22 ON t22.kunnr = t1.kunnr AND t22.param_type = 'LB'
- ) t1
- LEFT JOIN stg_f_loyal_monthly_result_candidate m0 ON m0.kunnr = t1.kunnr
- ) t1
- LEFT JOIN stg_f_loyal_monthly_result_base_result t2 ON t2.kunnr = t1.kunnr ;
- DELETE FROM bi_f_loyal_monthly_result WHERE period = lvperi_from;
- INSERT INTO bi_f_loyal_monthly_result
- SELECT lvperi_from AS period ,
- COALESCE(NULLIF(m1.kunnr, ''), '-1') AS kunnr ,
- COALESCE(NULLIF(m2.bukrs, ''), '-1') AS bukrs ,
- COALESCE(NULLIF(m1.vkorg, ''), '-1') AS vkorg ,
- COALESCE(NULLIF(m1.vkbur, ''), '-1') AS vkbur ,
- COALESCE(t1.delv_value, 0) AS delv_value ,
- COALESCE(t1.delv_return_value, 0) AS delv_return_value ,
- COALESCE(t2.bill_value, 0) AS bill_value ,
- COALESCE(t2.bill_return_value, 0) AS bill_return_value ,
- COALESCE(t1.pd_delv_value, 0) AS pd_delv_value ,
- COALESCE(t1.pd_delv_return_value, 0) AS pd_delv_return_value ,
- COALESCE(t2.pd_bill_value, 0) AS pd_bill_value ,
- COALESCE(t2.pd_bill_return_value, 0) AS pd_bill_return_value ,
- COALESCE(t1.target, t2.target, 0) AS target ,
- COALESCE(t1.pd_target, t2.pd_target, 0) AS pd_target ,
- COALESCE(t3.base_j, 0) AS base_j ,
- COALESCE(t3.base_q, 0) AS base_q ,
- COALESCE(t3.base_k, 0) AS base_k ,
- COALESCE(t3.target_j, 0) AS target_j ,
- COALESCE(t3.target_q, 0) AS target_q ,
- COALESCE(t3.target_k, 0) AS target_k ,
- COALESCE(t3.frontage_j, 0) AS frontage_j ,
- COALESCE(t3.frontage_q, 0) AS frontage_q ,
- COALESCE(t3.frontage_k, 0) AS frontage_k ,
- COALESCE(t3.pd_j, 0) AS pd_j ,
- COALESCE(t3.pd_q, 0) AS pd_q ,
- COALESCE(t3.pd_k, 0) AS pd_k ,
- COALESCE(t3.total_j, 0) AS total_j ,
- COALESCE(t3.total_q, 0) AS total_q ,
- COALESCE(t3.total_k, 0) AS total_k ,
- COALESCE(NULLIF(t3.flag_target, ''), 'N') AS flag_target ,
- COALESCE(NULLIF(t3.flag_frontage, ''), 'N') AS flag_frontage ,
- COALESCE(NULLIF(t3.flag_pd, ''), 'N') AS flag_pd ,
- COALESCE(NULLIF(t3.flag_layak_bayar, ''), 'N') AS flag_layak_bayar,
- /*
- COALESCE(t4.value_so,0) value_so,
- COALESCE(t4.value_so_return,0) value_so_return,
- COALESCE(t4.pd_value_so,0) pd_value_so,
- COALESCE(t4.pd_value_so_return,0) pd_value_so_return,
- */
- SUBSTR(COALESCE(t5.kunnr_group,'-1'),1,100) kunnr_group
- --FROM smusap_pl.zta_x_lyt_canddt m1
- FROM
- (
- SELECT COALESCE(t3.kunnr_cm, m1.kunnr) kunnr ,
- MAX(m1.vkorg) AS vkorg ,
- MAX(m1.vkbur) AS vkbur
- FROM smusap_pl.zta_x_lyt_canddt m1
- LEFT JOIN smusap_pl.zta_s_lyt_grpcm t3 ON t3.kunnr = m1.kunnr
- WHERE m1.joindt <> '9999-12-31'
- AND ((m1.datab <= lvdate_to AND m1.datbi >= lvdate_to) OR ( m1.datab = '9999-12-31' ) )
- GROUP BY COALESCE(t3.kunnr_cm, m1.kunnr)
- ) m1
- LEFT JOIN smusap_pl.tvko m2 ON m2.vkorg = m1.vkorg
- LEFT JOIN stg_f_loyal_monthly_result_delv t1 ON t1.kunnr = m1.kunnr
- LEFT JOIN stg_f_loyal_monthly_result_inv t2 ON t2.kunnr = m1.kunnr
- LEFT JOIN stg_f_loyal_monthly_result_ach t3 ON t3.kunnr = m1.kunnr
- LEFT JOIN
- (
- SELECT COALESCE(kunnr_cm, kunnr) kunnr
- /*SUM(value_so) value_so,
- SUM(value_so_return) value_so_return,
- SUM(pd_value_so) pd_value_so,
- SUM(pd_value_so_return) pd_value_so_return
- */
- FROM stg_f_loyal_monthly_result_so
- GROUP BY COALESCE(kunnr_cm, kunnr)
- ) t4 ON t4.kunnr = m1.kunnr
- LEFT JOIN
- (
- SELECT kunnr_cm kunnr, string_agg(ltrim(kunnr,0), ',') kunnr_group
- FROM smusap_pl.zta_s_lyt_grpcm
- GROUP BY kunnr_cm
- ) t5 ON t5.kunnr = m1.kunnr;
- GET DIAGNOSTICS lvcounter = ROW_COUNT;
- lvitext := 'CDC bi_f_loyal_monthly_result (' || paramdate || ') ' || lvcounter || ' Already Done on ' || now();
- return lvitext;
- commit;
- end;
- $BODY$
- LANGUAGE plpgsql VOLATILE;
- ALTER FUNCTION smurds.fnc_init_bi_f_loyal_monthly_result(date, text)
- OWNER TO smuetl;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement