日期:2014-05-17  浏览次数:20682 次

求完成如图统计
我有一订单表
里面有 id   订单类型, 订购数量,单价,总金额,订购状态

其中订单类型1为秒杀,2为团购
订单状态有:取消,退款,完成
求完成如下统计

------解决方案--------------------
case when 语句判断下
------解决方案--------------------
select 订单类型,总数=sum(订购数量),sum(总金额),
       sum(case when 订单状态='取消' then 订购数量 end),
       sum(case when 订单状态='取消' then 总金额 end),
.........
from tb group by 订单类型
------解决方案--------------------
select  'all',sum(订购数量),
                sum(总金额),   
              sum(case when 订购状态 ='取消' then  订购数量 else 0 end),
                sum(case when 订购状态 ='取消' then  总金额 else 0 end) ,
                .......
from 订单表 
union 
select  'all',sum(订购数量),
                sum(总金额),   
              sum(case when 订购状态 ='取消' then  订购数量 else 0 end),
                sum(case when 订购状态 ='取消' then  总金额 else 0 end) ,
                .......
from 订单表 
where 订单类型= 1

union 
select  'all',sum(订购数量),
                sum(总金额),   
              sum(case when 订购状态 ='取消' then  订购数量 else 0 end),
                sum(case when 订购状态 ='取消' then  总金额 else 0 end) ,
                .......
from 订单表 
where 订单类型= 2
------解决方案--------------------
select 订单类型=case when grouping(订单类型)=1 then '合计' else 订单类型 end,总数=sum(订购数量),sum(总金额),
       sum(case when 订单状态='取消' then 订购数量 end),
       sum(case when 订单状态='取消' then 总金额 end),
.........
from tb group by 订单类型 with rollup