@@ -511,29 +511,629 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
END,
this_year_profit_change = ( this_year_profit - last_year_profit);
</update>
<select id= "selectNewGrBiSaAggList" parameterType= "com.lideeyunji.core.framework.entity.NewGrBiSaAgg " resultMap= "NewGrBiSaAggResult" >
<include refid= "selectNewGrBiSaAggVo" />
<select id= "selectNewGrBiSaAggList" parameterType= "com.lideeyunji.core.framework.params.SaAggParam " resultMap= "NewGrBiSaAggResult" >
SELECT
ANY_VALUE (tbl_lgbsa.id) id,
tbl_lgbsa.use_year,
tbl_lgbsa.use_month,
CONCAT(tbl_lgbsa.use_year, LPAD(tbl_lgbsa.use_month, 2, '0')) AS ny,
tbl_lgbsa.zone_id,
tbl_lgbsa.zone_name,
tbl_lgbsa.sale_type_id,
tbl_lgbsa.sale_type_name,
tbl_lgbsa.custom_id,
tbl_lgbsa.custom_name,
tbl_lgbsa.dosage_id,
tbl_lgbsa.dosage_name,
tbl_lgbsa.goods_id,
tbl_lgbsa.goods_name,
tbl_lgbsa.std_goods_name,
tbl_lgbsa.province_id,
tbl_lgbsa.province_name,
tbl_lgbsa.saler_id,
tbl_lgbsa.saler_name,
tbl_lgbsa.this_month_sa_qty AS thisMonthSaQty,
ROUND(tbl_lgbsa.this_month_sa_money / 10000, 2) AS this_month_sa_money, -- 本月销售金额(元)
ROUND(tbl_lgbsa.this_month_cost / 10000, 2) AS this_month_cost,
ROUND(tbl_lgbsa.this_month_profit / 10000, 2) AS this_month_profit,
tbl_lgbsa.last_month_sa_qty as last_month_sa_qty,
ROUND(tbl_lgbsa.last_month_sa_money / 10000, 2) as last_month_sa_money,
ROUND(tbl_lgbsa.last_month_profit / 10000, 2) as last_month_profit,
ROUND(tbl_lgbsa.last_month_cost / 10000, 2) as last_month_cost,
ROUND(tbl_lgbsa.yoy_month_sa_qty/ 10000, 2) as yoy_month_sa_qty,
ROUND(tbl_lgbsa.yoy_month_sa_money / 10000, 2) as yoy_month_sa_money,
ROUND(tbl_lgbsa.yoy_month_profit / 10000, 2) as yoy_month_profit,
ROUND(tbl_lgbsa.yoy_month_cost / 10000, 2) as yoy_month_cost,
CONCAT(ROUND((SELECT SUM(MONTHSAQTY) FROM yunji_gr_bi_sa_agg)/100000000 ,2), '亿') AS monthsaqty_s,
CONCAT(ROUND((SELECT SUM(THISSAQTY) FROM yunji_gr_bi_sa_agg)/100000000 ,2), '亿') AS thissaqty_s,
CONCAT(ROUND((SELECT SUM(LASTSAQTY) FROM yunji_gr_bi_sa_agg)/100000000 ,2), '亿') AS lastsaqty_s,
-- 原本带CAST的字段, 简化写法( CONCAT会自动转为字符串)
CONCAT(ROUND((SELECT SUM(MONTHSAMONEY) FROM yunji_gr_bi_sa_agg)/100000000 ,2), '亿') AS monthsamoney_s,
CONCAT(ROUND((SELECT SUM(THISSAMONEY) FROM yunji_gr_bi_sa_agg)/100000000,2), '亿') AS thissamoney_s,
CONCAT(ROUND((SELECT SUM(LASTSAMONEY) FROM yunji_gr_bi_sa_agg)/100000000,2), '亿') AS lastsamoney_s,
CASE
WHEN (CASE WHEN tbl_lgbsa.yoy_month_sa_qty = 0 THEN IF(tbl_lgbsa.this_month_sa_qty > 0, 100, 0)
ELSE (tbl_lgbsa.this_month_sa_qty - tbl_lgbsa.yoy_month_sa_qty) / tbl_lgbsa.yoy_month_sa_qty * 100 END) > 0 THEN
CONCAT('🟢 ', ROUND((CASE WHEN tbl_lgbsa.yoy_month_sa_qty = 0 THEN IF(tbl_lgbsa.this_month_sa_qty > 0, 100, 0)
ELSE (tbl_lgbsa.this_month_sa_qty - tbl_lgbsa.yoy_month_sa_qty) / tbl_lgbsa.yoy_month_sa_qty * 100 END), 2))
WHEN (CASE WHEN tbl_lgbsa.yoy_month_sa_qty = 0 THEN IF(tbl_lgbsa.this_month_sa_qty > 0, 100, 0)
ELSE (tbl_lgbsa.this_month_sa_qty - tbl_lgbsa.yoy_month_sa_qty) / tbl_lgbsa.yoy_month_sa_qty * 100 END)< 0 THEN
CONCAT('🔴 ', ROUND((CASE WHEN tbl_lgbsa.yoy_month_sa_qty = 0 THEN IF(tbl_lgbsa.this_month_sa_qty > 0, 100, 0)
ELSE (tbl_lgbsa.this_month_sa_qty - tbl_lgbsa.yoy_month_sa_qty) / tbl_lgbsa.yoy_month_sa_qty * 100 END), 2))
ELSE '0.00'
END AS monthsaqty_yoy,
-- 数量同比(原有)
CASE
WHEN (CASE WHEN tbl_lgbsa.yoy_month_sa_money = 0 THEN IF(tbl_lgbsa.this_month_sa_money > 0, 100, 0)
ELSE (tbl_lgbsa.this_month_sa_money - tbl_lgbsa.yoy_month_sa_money) / tbl_lgbsa.yoy_month_sa_money * 100 END) > 0 THEN
CONCAT('🟢 ', ROUND((CASE WHEN tbl_lgbsa.yoy_month_sa_money = 0 THEN IF(tbl_lgbsa.this_month_sa_money > 0, 100, 0)
ELSE (tbl_lgbsa.this_month_sa_money - tbl_lgbsa.yoy_month_sa_money) / tbl_lgbsa.yoy_month_sa_money * 100 END), 2))
WHEN (CASE WHEN tbl_lgbsa.yoy_month_sa_money = 0 THEN IF(tbl_lgbsa.this_month_sa_money > 0, 100, 0)
ELSE (tbl_lgbsa.this_month_sa_money - tbl_lgbsa.yoy_month_sa_money) / tbl_lgbsa.yoy_month_sa_money * 100 END)< 0 THEN
CONCAT('🔴 ', ROUND((CASE WHEN tbl_lgbsa.yoy_month_sa_money = 0 THEN IF(tbl_lgbsa.this_month_sa_money > 0, 100, 0)
ELSE (tbl_lgbsa.this_month_sa_money - tbl_lgbsa.yoy_month_sa_money) / tbl_lgbsa.yoy_month_sa_money * 100 END), 2))
ELSE '0.00'
END AS monthsamoney_yoy,
CASE WHEN (CASE WHEN tbl_lgbsa.yoy_month_profit = 0 THEN IF(tbl_lgbsa.yoy_month_profit > 0, 100, 0)
ELSE (tbl_lgbsa.yoy_month_profit - tbl_lgbsa.yoy_month_profit) / tbl_lgbsa.yoy_month_profit * 100 END) > 0 THEN
CONCAT('🟢 ', ROUND((CASE WHEN tbl_lgbsa.yoy_month_profit = 0 THEN IF(tbl_lgbsa.yoy_month_profit > 0, 100, 0)
ELSE (tbl_lgbsa.yoy_month_profit - tbl_lgbsa.yoy_month_profit) / tbl_lgbsa.yoy_month_profit * 100 END), 2))
WHEN (CASE WHEN tbl_lgbsa.yoy_month_profit = 0 THEN IF(tbl_lgbsa.yoy_month_profit > 0, 100, 0)
ELSE (tbl_lgbsa.yoy_month_profit - tbl_lgbsa.yoy_month_profit) / tbl_lgbsa.yoy_month_profit * 100 END)< 0 THEN
CONCAT('🔴 ', ROUND((CASE WHEN tbl_lgbsa.yoy_month_profit = 0 THEN IF(tbl_lgbsa.yoy_month_profit > 0, 100, 0)
ELSE (tbl_lgbsa.yoy_month_profit - tbl_lgbsa.yoy_month_profit) / tbl_lgbsa.yoy_month_profit * 100 END), 2))
ELSE '0.00'
END AS monthprofit_yoy,
CASE
WHEN (CASE WHEN tbl_lgbsa.last_month_sa_money = 0 THEN IF(tbl_lgbsa.this_month_sa_money > 0, 100, 0)
ELSE (tbl_lgbsa.this_month_sa_money - tbl_lgbsa.last_month_sa_money) / tbl_lgbsa.last_month_sa_money * 100 END) > 0 THEN
CONCAT('🟢 ', ROUND((CASE WHEN tbl_lgbsa.last_month_sa_money = 0 THEN IF(tbl_lgbsa.this_month_sa_money > 0, 100, 0)
ELSE (tbl_lgbsa.this_month_sa_money - tbl_lgbsa.last_month_sa_money) / tbl_lgbsa.last_month_sa_money * 100 END), 2))
WHEN (CASE WHEN tbl_lgbsa.last_month_sa_money = 0 THEN IF(tbl_lgbsa.this_month_sa_money > 0, 100, 0)
ELSE (tbl_lgbsa.this_month_sa_money - tbl_lgbsa.last_month_sa_money) / tbl_lgbsa.last_month_sa_money * 100 END)< 0 THEN
CONCAT('🔴 ', ROUND((CASE WHEN tbl_lgbsa.last_month_sa_money = 0 THEN IF(tbl_lgbsa.this_month_sa_money > 0, 100, 0)
ELSE (tbl_lgbsa.this_month_sa_money - tbl_lgbsa.last_month_sa_money) / tbl_lgbsa.last_month_sa_money * 100 END), 2))
ELSE '0.00'
END AS lastMonthSaMoney_yoy, -- 本月销售金额增长率
ROUND(tbl_lgbsa.this_month_profit_rate * 100, 2) AS this_month_sa_money_share,
ROUND(tbl_lgbsa.this_month_sa_money_share * 100, 2) AS this_month_profit_share
FROM
new_gr_bi_sa_agg tbl_lgbsa
<where >
<if test= "useYear != null and useYear != ''" > and use_year = #{useYear}</if>
<if test= "useMonth != null " > and use_month = #{useMonth}</if>
<if test= "zoneId != null "> and zone_id = #{zoneId} </if>
<if test= "zoneName != null and zoneName != ''" > and zone_name like concat('%', #{zoneName}, '%')</if>
<if test= "saleTypeId != null " > and sale_type_id = #{saleTypeId}</if >
<if test= "saleTypeName != null and saleTypeName != ''" > and sale_type_name like concat('%', #{saleTypeName}, '%')</if>
<if test= "customId != null " > and custom_id = #{customId}</if >
<if test= "customName != null and customName != ''" > and custom_name like concat('%', #{customName}, '%')< /if>
<if test="dosag eId != null "> and dosag e_id = #{dosag eId} </if>
<if test= "dosag eName != null and dosag eName != ''" > and dosage_name like concat('%', #{dosageName}, '%')</if>
<if test= "goodsId != null " > and goods_id = #{goodsId}</if >
<if test= "goodsName != null and goodsName != ''" > and goods_name like concat('%', #{goodsName}, '%')</if>
<if test= "provinceId != null " > and province_id = #{provinceId}</if >
<if test= "provinceName != null and provinceName != ''" > and province_name like concat('%', #{provinceName}, '%')< /if>
<if test= "saler Id != null "> and saler _id = #{saler Id} </if>
<if test= "saler Name != null and saler Name != ''" > and saler_name like concat('%', #{salerName}, '%')</if>
<if test= "thisMonthSaQty != null " > and this_month_sa_qty = #{thisMonthSaQty}</if >
<if test= "thisMonthSaMoney != null " > and this_month_sa_money = #{thisMonthSaMoney}</if>
<if test= "thisMonthCost != null " > and this_month_cost = #{thisMonthCost}</if >
<if test= "thisMonthProfit != null " > and this_month_profit = #{thisMonthProfit}< /if>
<!-- <if test="zoneId != null "> and zone_id = #{zoneId}</if>-->
<if test= "zoneName != null and zoneName != ''" > and zone_name in
<foreach collection= "zoneName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach >
</if>
<!-- <if test="saleTyp eId != null "> and sale_typ e_id = #{saleTyp eId}</if>-->
<if test= "saleTyp eName != null and saleTyp eName != ''" > and sale_type_name in
<foreach collection= "saleTypeName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach >
</if>
<!-- <if test="custom Id != null "> and custom _id = #{custom Id}</if>-->
<if test= "custom Name != null and custom Name != ''" > and custom_name in
<foreach collection= "customName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach >
</if>
<!-- <if test="dosageId != null "> and dosage_id = #{dosageId}</if> -->
<if test= "dosageName != null and dosageName != ''" > and dosage_name in
<foreach collection= "dosageName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<!-- <if test="goodsId != null "> and goods_id = #{goodsId}</if> -->
<if test= "goodsName != null and goodsName != ''" > and goods_name in
<foreach collection= "goodsName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<!-- <if test="provinceId != null "> and province_id = #{provinceId}</if> -->
<if test= "provinceName != null and provinceName != ''" > and province_name in
<foreach collection= "provinceName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<!-- <if test="salerId != null "> and saler_id = #{salerId}</if> -->
<if test= "salerName != null and salerName != ''" > and saler_name in
<foreach collection= "salerName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "stdGoodsName != null and stdGoodsName != ''" > and std_goods_name in
<foreach collection= "stdGoodsName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
</where>
</select>
<select id= "selectNewGrBiSaAggGroupMonthList" resultMap= "NewGrBiSaAggResult" >
select
<if test= "groupFieldList.contains('useyear') || params.containsKey('usemonth')" >
current_month.use_month as usemonth,
<choose >
<when test= "groupFieldList.contains('useyear') || params.containsKey('useyear')" >
current_month.use_year as useyear,
current_month.use_year as ny, #年月
</when>
<otherwise >
LPAD(current_month.use_month, 2, '0') as ny,
</otherwise>
</choose>
</if>
<if test= "groupFieldList.contains('customname') || params.containsKey('customname')" >
current_month.custom_id as customid,
current_month.custom_name as customname, #客户名称
</if>
<if test= "groupFieldList.contains('zonename') || params.containsKey('zonename')" >
current_month.zone_id,
current_month.zone_name as zonename,
</if>
<if test= "groupFieldList.contains('saletypename') || params.containsKey('saletypename')" >
current_month.sale_type_id,
current_month.sale_type_name as saletypename,
</if>
<if test= "groupFieldList.contains('salername') || params.containsKey('salername')" >
current_month.saler_id,
current_month.saler_name as salername, #业务员
</if>
<if test= "groupFieldList.contains('dosagename') || params.containsKey('dosagename')" >
current_month.dosage_id,
current_month.dosage_name as dosagename, #剂型
</if>
<if test= "groupFieldList.contains('stdGoodsName') || params.containsKey('stdGoodsName')" >
current_month.std_goods_name as stdGoodsName,
</if>
current_month.this_month_sa_qty AS thisMonthSaQty, #本月销售数量(件)
ROUND(current_month.this_month_sa_money / 10000, 2) AS thisMonthSaMoney, #本月销售金额(元)
ROUND(current_month.this_month_profit / 10000, 2) AS thisMonthProfit, #本月毛利额(元)
ROUND(current_month.this_month_cost / 10000, 2) AS thisMonthCost, #本月成本(元)
last_month_data.last_month_sa_qty AS lastMonthSaQty, #上月销售数量(件)
ROUND(last_month_data.last_month_sa_money / 10000, 2) AS lastMonthSaMoney, #上月销售金额(元)
ROUND(last_month_data.last_month_profit / 10000, 2) AS lastMonthProfit, #上月毛利额(元)
ROUND(last_month_data.last_month_cost / 10000, 2) AS lastMonthCost, #上月成本(元)
ROUND(yoy_month.yoy_month_sa_qty / 10000, 2) AS yoyMonthSaQty, #同比月销售数量(件)
ROUND(yoy_month.yoy_month_sa_money / 10000, 2) AS yoyMonthSaMoney, #同比月销售金额(元)
ROUND(yoy_month.yoy_month_profit / 10000, 2) AS yoyMonthProfit, #同比月毛利额(元)
ROUND(yoy_month.yoy_month_cost / 10000, 2) AS yoyMonthCost, #同比月成本(元)
current_month.province_id AS province_id, #行政区域ID
current_month.province_name AS province_name, #行政区域名称
CASE WHEN (CASE WHEN yoy_month.yoy_month_sa_qty = 0 THEN IF(current_month.this_month_sa_qty > 0, 100, 0)
ELSE (current_month.this_month_sa_qty - yoy_month.yoy_month_sa_qty) / yoy_month.yoy_month_sa_qty * 100 END) > 0 THEN
CONCAT('🟢 ', ROUND((CASE WHEN yoy_month.yoy_month_sa_qty = 0 THEN IF(current_month.this_month_sa_qty > 0, 100, 0)
ELSE (current_month.this_month_sa_qty - yoy_month.yoy_month_sa_qty) / yoy_month.yoy_month_sa_qty * 100 END), 2))
WHEN (CASE WHEN yoy_month.yoy_month_sa_qty = 0 THEN IF(current_month.this_month_sa_qty > 0, 100, 0)
ELSE (current_month.this_month_sa_qty - yoy_month.yoy_month_sa_qty) / yoy_month.yoy_month_sa_qty * 100 END)< 0 THEN
CONCAT('🔴 ', ROUND((CASE WHEN yoy_month.yoy_month_sa_qty = 0 THEN IF(current_month.this_month_sa_qty > 0, 100, 0)
ELSE (current_month.this_month_sa_qty - yoy_month.yoy_month_sa_qty) / yoy_month.yoy_month_sa_qty * 100 END), 2))
END AS monthsaqty_yoy, #本月销量同比
CASE WHEN (CASE WHEN yoy_month.yoy_month_sa_money = 0 THEN IF(current_month.this_month_sa_money > 0, 100, 0)
ELSE (current_month.this_month_sa_money - yoy_month.yoy_month_sa_money) / yoy_month.yoy_month_sa_money * 100 END) > 0 THEN
CONCAT('🟢 ', ROUND((CASE WHEN yoy_month.yoy_month_sa_money = 0 THEN IF(current_month.this_month_sa_money > 0, 100, 0)
ELSE (current_month.this_month_sa_money - yoy_month.yoy_month_sa_money) / yoy_month.yoy_month_sa_money * 100 END), 2))
WHEN (CASE WHEN yoy_month.yoy_month_sa_money = 0 THEN IF(current_month.this_month_sa_money > 0, 100, 0)
ELSE (current_month.this_month_sa_money - yoy_month.yoy_month_sa_money) / yoy_month.yoy_month_sa_money * 100 END)< 0 THEN
CONCAT('🔴 ', ROUND((CASE WHEN yoy_month.yoy_month_sa_money = 0 THEN IF(current_month.this_month_sa_money > 0, 100, 0)
ELSE (current_month.this_month_sa_money - yoy_month.yoy_month_sa_money) / yoy_month.yoy_month_sa_money * 100 END), 2))
ELSE '0.00'
END AS monthsamoney_yoy, #本月销售金额同比
CASE WHEN (CASE WHEN last_month_data.last_month_sa_money = 0 THEN IF(current_month.this_month_sa_money > 0, 100, 0)
ELSE (current_month.this_month_sa_money - last_month_data.last_month_sa_money) / last_month_data.last_month_sa_money * 100 END) > 0 THEN
CONCAT('🟢 ', ROUND((CASE WHEN last_month_data.last_month_sa_money = 0 THEN IF(current_month.this_month_sa_money > 0, 100, 0)
ELSE (current_month.this_month_sa_money - last_month_data.last_month_sa_money) / last_month_data.last_month_sa_money * 100 END), 2))
WHEN (CASE WHEN last_month_data.last_month_sa_money = 0 THEN IF(current_month.this_month_sa_money > 0, 100, 0)
ELSE (current_month.this_month_sa_money - last_month_data.last_month_sa_money) / last_month_data.last_month_sa_money * 100 END)< 0 THEN
CONCAT('🔴 ', ROUND((CASE WHEN last_month_data.last_month_sa_money = 0 THEN IF(current_month.this_month_sa_money > 0, 100, 0)
ELSE (current_month.this_month_sa_money - last_month_data.last_month_sa_money) / last_month_data.last_month_sa_money * 100 END), 2))
ELSE '0.00'
END AS lastMonthSaMoney_yoy, #本月销售金额增长率
CASE WHEN (CASE WHEN yoy_month.yoy_month_cost = 0 THEN IF(current_month.this_month_cost > 0, 100, 0)
ELSE (current_month.this_month_cost - yoy_month.yoy_month_cost) / yoy_month.yoy_month_cost * 100 END) > 0 THEN
CONCAT('🟢 ', ROUND((CASE WHEN yoy_month.yoy_month_cost = 0 THEN IF(current_month.this_month_cost > 0, 100, 0)
ELSE (current_month.this_month_cost - yoy_month.yoy_month_cost) / yoy_month.yoy_month_cost * 100 END), 2))
WHEN (CASE WHEN yoy_month.yoy_month_cost = 0 THEN IF(current_month.this_month_cost > 0, 100, 0)
ELSE (current_month.this_month_cost - yoy_month.yoy_month_cost) / yoy_month.yoy_month_cost * 100 END)< 0 THEN
CONCAT('🔴 ', ROUND((CASE WHEN yoy_month.yoy_month_cost = 0 THEN IF(current_month.this_month_cost > 0, 100, 0)
ELSE (current_month.this_month_cost - yoy_month.yoy_month_cost) / yoy_month.yoy_month_cost * 100 END), 2))
ELSE '0.00'
END AS this_month_cost_yoy, #本月销售成本同比
CASE WHEN (CASE WHEN yoy_month.yoy_month_profit = 0 THEN IF(current_month.this_month_profit > 0, 100, 0)
ELSE (current_month.this_month_profit - yoy_month.yoy_month_profit) / yoy_month.yoy_month_profit * 100 END) > 0 THEN
CONCAT('🟢 ', ROUND((CASE WHEN yoy_month.yoy_month_profit = 0 THEN IF(current_month.this_month_profit > 0, 100, 0)
ELSE (current_month.this_month_profit - yoy_month.yoy_month_profit) / yoy_month.yoy_month_profit * 100 END), 2))
WHEN (CASE WHEN yoy_month.yoy_month_profit = 0 THEN IF(current_month.this_month_profit > 0, 100, 0)
ELSE (current_month.this_month_profit - yoy_month.yoy_month_profit) / yoy_month.yoy_month_profit * 100 END)< 0 THEN
CONCAT('🔴 ', ROUND((CASE WHEN yoy_month.yoy_month_profit = 0 THEN IF(current_month.this_month_profit > 0, 100, 0)
ELSE (current_month.this_month_profit - yoy_month.yoy_month_profit) / yoy_month.yoy_month_profit * 100 END), 2))
ELSE '0.00'
END AS monthprofit_yoy, #本月毛利同比
COALESCE (ROUND( current_month.this_month_sa_money/total_month_data.this_month_sa_money_sum * 100, 2), 0 ) as this_month_sa_money_share, #本月销售金额占比
COALESCE (ROUND( current_month.this_month_profit/total_month_data.this_month_profit_sum * 100, 2), 0 ) as this_month_profit_share #本月毛利额占比
FROM ( SELECT
<if test= "groupFieldList.contains('useyear') || params.containsKey('useyear')" >
use_year,
</if>
use_month,
<if test= "groupFieldList.contains('customname') || params.containsKey('customname')" > # 客户名称
custom_id,
custom_name ,
</if>
<if test= "groupFieldList.contains('stdGoodsName') || params.containsKey('stdGoodsName')" >
std_goods_name,
</if>
<if test= "groupFieldList.contains('zonename') || params.containsKey('zonename')" > #业务区域
zone_id,
zone_name,
</if>
<if test= "groupFieldList.contains('saletypename') || params.containsKey('saletypename')" > #销售类型
sale_type_id,
sale_type_name,
</if>
<if test= "groupFieldList.contains('dosagename') || params.containsKey('dosagename')" >
dosage_id,
dosage_name,
</if>
<if test= "groupFieldList.contains('salername') || params.containsKey('salername')" >
saler_id,
saler_name,
</if>
CONCAT(MAX(use_year), LPAD(MAX(use_month), 2, '0')) AS ny,
GROUP_CONCAT(DISTINCT province_id ORDER BY province_id SEPARATOR ',') AS province_id,
GROUP_CONCAT(DISTINCT province_name ORDER BY province_name SEPARATOR ',') AS province_name,
sum(this_month_sa_qty) AS this_month_sa_qty,
sum(this_month_sa_money) AS this_month_sa_money,
sum(this_month_cost) AS this_month_cost,
sum(this_month_profit) AS this_month_profit
FROM
new_gr_bi_sa_agg_month_count
<where >
<if test= "saAggParam.useYear != null and saAggParam.useYear != ''" > and use_year = #{saAggParam.useYear}</if>
<if test= "saAggParam.useMonth != null " > and use_month = #{saAggParam.useMonth}</if>
<if test= "saAggParam.zoneName != null and saAggParam.zoneName != ''" > and zone_name in
<foreach collection= "saAggParam.zoneName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.saleTypeName != null and saAggParam.saleTypeName != ''" > and sale_type_name in
<foreach collection= "saAggParam.saleTypeName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.customName != null and saAggParam.customName != ''" > and custom_name in
<foreach collection= "saAggParam.customName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.dosageName != null and saAggParam.dosageName != ''" > and dosage_name in
<foreach collection= "saAggParam.dosageName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.goodsName != null and saAggParam.goodsName != ''" > and goods_name in
<foreach collection= "saAggParam.goodsName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.provinceName != null and saAggParam.provinceName != ''" > and province_name in
<foreach collection= "saAggParam.provinceName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.salerName != null and saAggParam.salerName != ''" > and saler_name in
<foreach collection= "saAggParam.salerName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.stdGoodsName != null and saAggParam.stdGoodsName != ''" > and std_goods_name in
<foreach collection= "saAggParam.stdGoodsName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
</where>
GROUP BY
<trim suffixOverrides= "," >
<if test= "groupFieldList.contains('useyear') || params.containsKey('useyear')" >
use_year,
</if>
use_month,
<if test= "groupFieldList.contains('customname') || params.containsKey('customname')" > # 客户名称
custom_id,
custom_name ,
</if>
<if test= "groupFieldList.contains('stdGoodsName') || params.containsKey('stdGoodsName')" > # 标准品名
std_goods_name,
</if>
<if test= "groupFieldList.contains('zonename') || params.containsKey('zonename')" > #业务区域
zone_id,
zone_name,
</if>
<if test= "groupFieldList.contains('saletypename') || params.containsKey('saletypename')" > #销售类型
sale_type_id,
sale_type_name,
</if>
<if test= "groupFieldList.contains('dosagename') || params.containsKey('dosagename')" > #剂型
dosage_id,
dosage_name,
</if>
<if test= "groupFieldList.contains('salername') || params.containsKey('salername')" > #业务员
saler_id,
saler_name,
</if>
</trim>
) AS current_month # current_month 本月数据
LEFT JOIN (
SELECT
<if test= "groupFieldList.contains('useyear') || params.containsKey('useyear')" >
use_year,
</if>
use_month,
<if test= "groupFieldList.contains('customname') || params.containsKey('customname')" > # 客户名称
custom_id,
</if>
<if test= "groupFieldList.contains('stdGoodsName') || params.containsKey('stdGoodsName')" > # 标准品名
std_goods_name,
</if>
<if test= "groupFieldList.contains('zonename') || params.containsKey('zonename')" > #业务区域
zone_id,
</if>
<if test= "groupFieldList.contains('saletypename') || params.containsKey('saletypename')" > #销售类型
sale_type_id,
</if>
<if test= "groupFieldList.contains('dosagename') || params.containsKey('dosagename')" > #剂型
dosage_id,
</if>
<if test= "groupFieldList.contains('salername') || params.containsKey('salername')" > #业务员
saler_id,
</if>
SUM(this_month_sa_qty) AS last_month_sa_qty,
SUM(this_month_sa_money) AS last_month_sa_money,
SUM(this_month_cost) AS last_month_cost,
SUM(this_month_profit) AS last_month_profit
FROM new_gr_bi_sa_agg_month_count
GROUP BY
<trim suffixOverrides= "," >
<if test= "groupFieldList.contains('useyear') || params.containsKey('useyear')" >
use_year,
</if>
use_month,
<if test= "groupFieldList.contains('customname') || params.containsKey('customname')" > # 客户名称
custom_id,
</if>
<if test= "groupFieldList.contains('stdGoodsName') || params.containsKey('stdGoodsName')" > # 标准品名
std_goods_name,
</if>
<if test= "groupFieldList.contains('zonename') || params.containsKey('zonename')" > #业务区域
zone_id,
</if>
<if test= "groupFieldList.contains('saletypename') || params.containsKey('saletypename')" > #销售类型
sale_type_id,
</if>
<if test= "groupFieldList.contains('dosagename') || params.containsKey('dosagename')" > #剂型
dosage_id,
</if>
<if test= "groupFieldList.contains('salername') || params.containsKey('salername')" > #业务员
saler_id,
</if>
</trim>
) AS last_month_data # last_month_data 上月数据
ON last_month_data.use_month = IF(current_month.use_month = 1, 12, current_month.use_month - 1)
<if test= "groupFieldList.contains('useyear') || params.containsKey('useyear')" >
AND last_month_data.use_year = current_month.use_year - (current_month.use_month = 1)
</if>
<if test= "groupFieldList.contains('customname') || params.containsKey('customname')" > # 客户名称
AND current_month.custom_id = last_month_data.custom_id
</if>
<if test= "groupFieldList.contains('stdGoodsName') || params.containsKey('stdGoodsName')" > # 标准品名
AND current_month.std_goods_name = last_month_data.std_goods_name
</if>
<if test= "groupFieldList.contains('zonename') || params.containsKey('zonename')" > #业务区域
AND current_month.zone_id = last_month_data.zone_id
</if>
<if test= "groupFieldList.contains('saletypename') || params.containsKey('saletypename')" > #销售类型
AND current_month.sale_type_id = last_month_data.sale_type_id
</if>
<if test= "groupFieldList.contains('dosagename') || params.containsKey('dosagename')" > #剂型
AND current_month.dosage_id = last_month_data.dosage_id
</if>
# if (groupFieldList.contains('salername') || params.containsKey('salername')) {
<if test= "groupFieldList.contains('salername') || params.containsKey('salername')" > #业务员
AND current_month.saler_id = last_month_data.saler_id
</if>
LEFT JOIN (
SELECT
<if test= "groupFieldList.contains('useyear') || params.containsKey('useyear')" >
use_year,
</if>
use_month,
<if test= "groupFieldList.contains('customname') || params.containsKey('customname')" > # 客户名称
custom_id,
</if>
<if test= "groupFieldList.contains('stdGoodsName') || params.containsKey('stdGoodsName')" > # 标准品名
std_goods_name,
</if>
<if test= "groupFieldList.contains('zonename') || params.containsKey('zonename')" > #业务区域
zone_id,
</if>
<if test= "groupFieldList.contains('saletypename') || params.containsKey('saletypename')" > #销售类型
sale_type_id,
</if>
<if test= "groupFieldList.contains('dosagename') || params.containsKey('dosagename')" > #剂型
dosage_id,
</if>
<if test= "groupFieldList.contains('salername') || params.containsKey('salername')" > #业务员
saler_id,
</if>
SUM(this_month_sa_qty) AS yoy_month_sa_qty, # 同比月销量
SUM(this_month_sa_money) AS yoy_month_sa_money, # 同比月销售金额
SUM(this_month_cost) as yoy_month_cost, # 同比月销售成本
SUM(this_month_profit) AS yoy_month_profit # 同比月毛利额
FROM new_gr_bi_sa_agg_month_count
<where >
<if test= "saAggParam.useYear != null and saAggParam.useYear != ''" > and use_year = #{saAggParam.useYear}</if>
<if test= "saAggParam.useMonth != null " > and use_month = #{saAggParam.useMonth}</if>
<if test= "saAggParam.zoneName != null and zoneName != ''" > and zone_name in
<foreach collection= "saAggParam.zoneName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.saleTypeName != null and saAggParam.saleTypeName != ''" > and sale_type_name in
<foreach collection= "saAggParam.saleTypeName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.customName != null and saAggParam.customName != ''" > and custom_name in
<foreach collection= "saAggParam.customName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.dosageName != null and saAggParam.dosageName != ''" > and dosage_name in
<foreach collection= "saAggParam.dosageName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.goodsName != null and saAggParam.goodsName != ''" > and goods_name in
<foreach collection= "saAggParam.goodsName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.provinceName != null and saAggParam.provinceName != ''" > and province_name in
<foreach collection= "saAggParam.provinceName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.salerName != null and saAggParam.salerName != ''" > and saler_name in
<foreach collection= "saAggParam.salerName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.stdGoodsName != null and saAggParam.stdGoodsName != ''" > and std_goods_name in
<foreach collection= "saAggParam.stdGoodsName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
</where>
GROUP BY
<trim suffixOverrides= "," >
<if test= "groupFieldList.contains('useyear') || params.containsKey('useyear')" >
use_year,
</if>
use_month,
<if test= "groupFieldList.contains('customname') || params.containsKey('customname')" > # 客户名称
custom_id,
</if>
<if test= "groupFieldList.contains('stdGoodsName') || params.containsKey('stdGoodsName')" > # 标准品名
std_goods_name,
</if>
<if test= "groupFieldList.contains('zonename') || params.containsKey('zonename')" > #业务区域
zone_id,
</if>
<if test= "groupFieldList.contains('saletypename') || params.containsKey('saletypename')" > #销售类型
sale_type_id,
</if>
<if test= "groupFieldList.contains('dosagename') || params.containsKey('dosagename')" > #剂型
dosage_id,
</if>
<if test= "groupFieldList.contains('salername') || params.containsKey('salername')" > #业务员
saler_id,
</if>
</trim>
) yoy_month ON
<trim prefixOverrides= "and" >
<if test= "groupFieldList.contains('useyear') || params.containsKey('useyear')" >
and yoy_month.use_year = current_month.use_year - 1 # 同比月数据
</if>
and yoy_month.use_month = current_month.use_month
<if test= "groupFieldList.contains('customname') || params.containsKey('customname')" > # 客户名称
AND yoy_month.custom_id = current_month.custom_id
</if>
<if test= "groupFieldList.contains('stdGoodsName') || params.containsKey('stdGoodsName')" > # 标准品名
AND yoy_month.std_goods_name = current_month.std_goods_name
</if>
<if test= "groupFieldList.contains('zonename') || params.containsKey('zonename')" > #业务区域
AND yoy_month.zone_id = current_month.zone_id
</if>
<if test= "groupFieldList.contains('saletypename') || params.containsKey('saletypename')" > #销售类型
AND yoy_month.sale_type_id = current_month.sale_type_id
</if>
<if test= "groupFieldList.contains('dosagename') || params.containsKey('dosagename')" > #剂型
AND yoy_month.dosage_id = current_month.dosage_id
</if>
<if test= "groupFieldList.contains('salername') || params.containsKey('salername')" > #业务员
AND yoy_month.saler_id = current_month.saler_id
</if>
</trim>
LEFT JOIN (
SELECT
use_year,
SUM( this_month_sa_money ) AS this_month_sa_money_sum,
SUM(this_month_profit) AS this_month_profit_sum
FROM new_gr_bi_sa_agg
GROUP BY
use_year
) total_month_data ON total_month_data.use_year = current_month.use_year
<where >
<if test= "saAggParam.useYear != null and saAggParam.useYear != ''" > and current_month.use_year = #{saAggParam.useYear}</if>
<if test= "saAggParam.useMonth != null " > and current_month.use_month = #{saAggParam.useMonth}</if>
<if test= "saAggParam.zoneName != null and saAggParam.zoneName != ''" > and current_month.zone_name in
<foreach collection= "saAggParam.zoneName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.saleTypeName != null and saAggParam.saleTypeName != ''" > and current_month.sale_type_name in
<foreach collection= "saAggParam.saleTypeName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.customName != null and saAggParam.customName != ''" > and current_month.custom_name in
<foreach collection= "saAggParam.customName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.dosageName != null and saAggParam.dosageName != ''" > and current_month.dosage_name in
<foreach collection= "saAggParam.dosageName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.goodsName != null and saAggParam.goodsName != ''" > and current_month.goods_name in
<foreach collection= "saAggParam.goodsName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.provinceName != null and saAggParam.provinceName != ''" > and current_month.province_name in
<foreach collection= "saAggParam.provinceName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.salerName != null and saAggParam.salerName != ''" > and current_month.saler_name in
<foreach collection= "saAggParam.salerName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
<if test= "saAggParam.stdGoodsName != null and saAggParam.stdGoodsName != ''" > and current_month.std_goods_name in
<foreach collection= "saAggParam.stdGoodsName" item= "name" open= "(" separator= "," close= ")" >
#{name}
</foreach>
</if>
</where>
</select>