注:财务需要统计各产品品类各城市上周毛利情况 下面这样的表是沟通后展现的形式。数据展现形式我认为的大都是行列转 列转行的转置 从财务角度这样展现形式比较适合。
由于黄色部分为汇总项目,因此我拆分成9个转换步骤 类似纵向合并 只是汇总和各品类的字段不同无法纵向合并 因此用kettle时候汇总的各自成一个步骤,产品分类维度的分为各自步骤去填入到excel中
1、#C024_01销售总收入SQL 为了便于查找每个SQL前面都注释着编号 便于代码的复制和查找
SELECT '销售总收入' AS 销售总收入 ,SUM(IF(城市="城市A",销售额,NULL)) AS 城市A,SUM(IF(城市="城市B",销售额,NULL)) AS 城市B,SUM(IF(城市="城市C",销售额,NULL)) AS 城市C,SUM(IF(城市="城市D",销售额,NULL)) AS 城市D ,SUM(IF(城市="城市E",销售额,NULL)) AS 城市E FROM `a005_account` WHERE 应收日>=DATE_ADD(DATE(DATE_ADD(CURRENT_DATE,INTERVAL -WEEKDAY(CURRENT_DATE) DAY)),INTERVAL -1 WEEK) AND 应收日<DATE(DATE_ADD(CURRENT_DATE,INTERVAL -WEEKDAY(CURRENT_DATE) DAY))
2、#C024_02 上周品类销售收入
SELECT CONCAT(c.分类ID,'-',a.产品分类) AS 商品分类 ,SUM(IF(城市="城市A",销售额,NULL)) AS 城市A,SUM(IF(城市="城市B",销售额,NULL)) AS 城市B,SUM(IF(城市="城市C",销售额,NULL)) AS 城市C ,SUM(IF(城市="城市D",销售额,NULL)) AS 城市D,SUM(IF(城市="城市E",销售额,NULL)) AS 城市E FROM `a005_account` AS a LEFT JOIN `a002_产品` AS b ON a.产品ID=b.产品ID WHERE 应收日>=DATE_ADD(DATE(DATE_ADD(CURRENT_DATE,INTERVAL -WEEKDAY(CURRENT_DATE) DAY)),INTERVAL -1 WEEK) AND 应收日<DATE(DATE_ADD(CURRENT_DATE,INTERVAL -WEEKDAY(CURRENT_DATE) DAY)) LEFT JOIN `a000_cate` AS c ON a.产品分类=c.产品分类 GROUP BY a.产品分类 ORDER BY c.分类ID
3、#C024_03成本额汇总 #C024_04品类成本额 及毛利额汇总 品类毛利额 都和上面是一样的仅仅是sum(字段)不同可以 省略代码
4、#C024_09 上周优惠券金额
#C024_09 上周优惠券金额 SELECT '优惠券' AS 商品分类 ,SUM(IF(城市="城市A",优惠券金额,NULL)) AS 城市A,SUM(IF(城市="城市B",优惠券金额,NULL)) AS 城市B,SUM(IF(城市="城市C",优惠券金额,NULL)) AS 城市C ,SUM(IF(城市="城市D",优惠券金额,NULL)) AS 城市D,SUM(IF(城市="城市E",优惠券金额,NULL)) AS 城市E FROM `a016_order_customercoupon_xref` WHERE 使用时间>=DATE_ADD(DATE(DATE_ADD(CURRENT_DATE,INTERVAL -WEEKDAY(CURRENT_DATE) DAY)),INTERVAL -1 WEEK) AND 使用时间<DATE(DATE_ADD(CURRENT_DATE,INTERVAL -WEEKDAY(CURRENT_DATE) DAY))
5、设置excel模板 kettle转换 作业
6、数据展现 真实数据已处理 下面数据和实际逻辑数值不等