langjiu-project/FineReport/销售主题/报表/销售业绩/产品订单事业部.sql

119 lines
5.9 KiB
SQL

-- ======================================
-- 所属报表:品项主要指标达成
-- ======================================
WITH data_1 AS (
SELECT
t2.pl_name AS "产品线",
TO_CHAR( t1.stat_date, 'YYYY' ) AS "",
TO_CHAR( t1.stat_date, 'YYYY-MM' ) AS "年月",
TO_CHAR( t1.stat_date, 'Q' ) AS "",
TO_CHAR( t1.stat_date, 'YYYY-MM-DD' ) AS "",
t2.pi_name AS "品项",
t2.pr_name AS "产品系列",
t2.product_code AS "产品编码",
t2.product_name AS "产品名称",
t2.spec AS "规格",
t2.pack_base_num AS "转换率",
SUM(CASE WHEN t1.indi_type IN ('发货','电商订单','费用发货') THEN ${SWITCH(sLvl,0,'t1.amt_bu',1,'t1.amt_region',2,'t1.amt_office',3,'t1.amt_city_unit')} ELSE 0 END) AS "发货",
SUM(CASE WHEN t1.indi_type IN ('出货','电商订单') THEN ${SWITCH(sLvl,0,'t1.amt_bu',1,'t1.amt_region',2,'t1.amt_office',3,'t1.amt_city_unit')} ELSE 0 END) AS "出货",
SUM(CASE WHEN t1.indi_type = '合同' THEN ${SWITCH(sLvl,0,'t1.amt_bu',1,'t1.amt_region',2,'t1.amt_office',3,'t1.amt_city_unit')} ELSE 0 END) AS "合同",
SUM(CASE WHEN t1.indi_type = '实物库存' THEN ${SWITCH(sLvl,0,'t1.amt_bu',1,'t1.amt_region',2,'t1.amt_office',3,'t1.amt_city_unit')} ELSE 0 END) AS "实物库存",
SUM(CASE WHEN t1.indi_type = '在途库存' THEN ${SWITCH(sLvl,0,'t1.amt_bu',1,'t1.amt_region',2,'t1.amt_office',3,'t1.amt_city_unit')} ELSE 0 END) AS "在途库存",
SUM(CASE WHEN t1.indi_type = '未发货' THEN ${SWITCH(sLvl,0,'t1.amt_bu',1,'t1.amt_region',2,'t1.amt_office',3,'t1.amt_city_unit')} ELSE 0 END) AS "未发货",
SUM(CASE WHEN t1.indi_type IN('订单','电商订单','费用订单') THEN ${SWITCH(sLvl,0,'t1.amt_bu',1,'t1.amt_region',2,'t1.amt_office',3,'t1.amt_city_unit')} ELSE 0 END) AS "订单"
FROM
dm.dm_sal_indicator_day t1
LEFT JOIN dwr.dim_product t2 ON t1.product_code = t2.product_code
WHERE
t1.indi_type IN ('发货','电商订单','费用发货','出货','合同','实物库存','在途库存','未发货','订单','费用订单')
AND t1.stat_date BETWEEN '${FORMAT(YEARDELTA(sEnd_mon,-1),"yyyy-01-01")}' AND '${sEnd_mon}'
AND 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 = t1.bu_code
OR per_code = t1.region_code
OR per_code = t1.office_code
OR per_code = t1.city_unit_code
)
)
${IF(LEN(sBu)==0,"","AND t1.bu_code IN ('"+sBu+"')")}
${IF(LEN(sRegion)==0,"","AND t1.region_code IN ('"+sRegion+"')")}
${IF(LEN(sOffice)==0,"","AND t1.office_code IN ('"+sOffice+"')")}
${IF(LEN(sCu)==0,"","AND t1.city_unit_code IN ('"+sCu+"')")}
${IF(LEN(sProvince)==0,"","AND t1.province_name IN ('"+sProvince+"')")}
${IF(LEN(sProd)==0,"","AND t1.product_code IN ('"+sProd+"')")}
${IF(LEN(sPi_name)==0,"","AND t2.pi_name IN ('"+sPi_name+"')")}
GROUP BY
"产品线",
"",
"年月",
"",
"",
"品项",
"产品系列",
"产品编码",
"产品名称",
"规格",
"转换率"
)
SELECT
"产品线",
"品项",
"产品系列",
"产品编码",
"产品名称",
"规格",
"转换率",
SUM(CASE WHEN "" = '${YEAR(sEnd_mon)}' AND "" <= '${sEnd_mon}' THEN "发货" ELSE 0 END) / 10000 AS "今年累计_发货",
SUM(CASE WHEN "年月" <= '${FORMAT(YEARDELTA(sEnd_mon,-1),"yyyy-MM")}' THEN "发货" ELSE 0 END) / 10000 AS "去年同期_发货",
SUM(CASE WHEN "" = '${YEAR(sEnd_mon)}' AND "" = QUARTER(DATE('${sEnd_mon}')) AND "" <= '${sEnd_mon}' THEN "发货" ELSE 0 END) / 10000 AS "本季累计_发货",
SUM(CASE WHEN "年月" = '${FORMAT(sEnd_mon,"yyyy-MM")}' AND "" <= '${sEnd_mon}' THEN "发货" ELSE 0 END) / 10000 AS "今年当月累计_发货",
SUM(CASE WHEN "" = '${YEAR(sEnd_mon)}' AND "" <= '${sEnd_mon}' THEN "订单" ELSE 0 END) / 10000 AS "今年累计_订单",
SUM(CASE WHEN "年月" <= '${FORMAT(YEARDELTA(sEnd_mon,-1),"yyyy-MM")}' THEN "订单" ELSE 0 END) / 10000 AS "去年同期_订单",
SUM(CASE WHEN "" = '${YEAR(sEnd_mon)}' AND "" = QUARTER(DATE('${sEnd_mon}')) AND "" <= '${sEnd_mon}' THEN "订单" ELSE 0 END) / 10000 AS "本季累计_订单",
SUM(CASE WHEN "年月" = '${FORMAT(sEnd_mon,"yyyy-MM")}' AND "" <= '${sEnd_mon}' THEN "订单" ELSE 0 END) / 10000 AS "今年当月累计_订单",
SUM(CASE WHEN "" = '${YEAR(sEnd_mon)}' AND "" <= '${sEnd_mon}' THEN "出货" ELSE 0 END) / 10000 AS "今年累计_出货",
SUM(CASE WHEN "年月" <= '${FORMAT(YEARDELTA(sEnd_mon,-1),"yyyy-MM")}' THEN "出货" ELSE 0 END) / 10000 AS "去年同期_出货",
SUM(CASE WHEN "" = '${YEAR(sEnd_mon)}' AND "" = QUARTER(DATE('${sEnd_mon}')) AND "" <= '${sEnd_mon}' THEN "出货" ELSE 0 END) / 10000 AS "本季累计_出货",
SUM(CASE WHEN "年月" = '${FORMAT(sEnd_mon,"yyyy-MM")}' AND "" <= '${sEnd_mon}' THEN "出货" ELSE 0 END) / 10000 AS "今年当月累计_出货",
SUM(CASE WHEN "" = '${YEAR(sEnd_mon)}' THEN "合同" ELSE 0 END) / 10000 AS "今年累计_合同",
SUM(CASE WHEN "年月" = '${FORMAT(sEnd_mon,"yyyy-MM")}' THEN "实物库存" ELSE 0 END) / 10000 AS "当月末经销商库存_实物库存",
SUM(CASE WHEN "年月" = '${FORMAT(sEnd_mon,"yyyy-MM")}' THEN "在途库存" ELSE 0 END) / 10000 AS "当月末经销商库存_在途",
SUM(CASE WHEN "年月" = '${FORMAT(sEnd_mon,"yyyy-MM")}' THEN "未发货" ELSE 0 END) / 10000 AS "当月末经销商库存_未发货"
FROM
data_1
WHERE
"产品线" IS NOT NULL
AND "品项" IS NOT NULL
GROUP BY
"产品线",
"品项",
"产品系列",
"产品编码",
"产品名称",
"规格",
"转换率"
ORDER BY
"产品线",
"品项",
"产品系列",
"产品编码"