Mr_Cxy

导航

MySQL_财务统计各产品品类各城市上周收入毛利表_20161202

注:财务需要统计各产品品类各城市上周毛利情况 下面这样的表是沟通后展现的形式。数据展现形式我认为的大都是行列转 列转行的转置 从财务角度这样展现形式比较适合。

由于黄色部分为汇总项目,因此我拆分成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、数据展现 真实数据已处理 下面数据和实际逻辑数值不等  

 

posted on 2016-12-02 23:07  Mr_Cxy  阅读(754)  评论(0编辑  收藏  举报