根据不同的参数,groupby条件不一样

select data_class,year_,month_,item_type,item_type_F,area_1_channel,area_2_channel_F,sale_type_class,

       sum(销量) as 销量,sum(实际销量) as 实际销量,sum(收入) as 收入,sum(实际收入) as 实际收入,

   sum(毛利额) as 毛利额,sum(实际毛利额) as 实际毛利额

from

(select data_class,year_,month_,item_type,item_type_F,area_1_channel,area_2_channel,area_2_channel_F,sale_type_class,

       case when data_class='${数据类型1}' then qty else 0 end as 销量,

       case when data_class='${数据类型2}' then qty else 0 end as 实际销量,

   case when data_class='${数据类型1}' then rev else 0 end as 收入,

       case when data_class='${数据类型2}' then rev else 0 end as 实际收入,

       case when data_class='${数据类型1}' then gp else 0 end as 毛利额,

       case when data_class='${数据类型2}' then gp else 0 end as 实际毛利额

from 

(

select data_class,year_,month_,item_type,item_type as item_type_F,area_1_channel,area_2_channel,area_2_channel as area_2_channel_F,sale_type_class,qty,rev,gp

from O_IFS_UNION_DUAN2DUAN

union all

select data_class,year_,month_,item_type,'CBG_OBG' as item_type_F,area_1_channel,area_2_channel,'total' as area_2_channel_F,sale_type_class,qty,rev,gp  

from O_IFS_UNION_DUAN2DUAN

) a

where data_class in ('${数据类型1}','${数据类型2}') 

and year_='${年}' 

and month_ in ('${月}' )

and 1=1 ${if(项目类别='CBG_OBG',"AND item_type_F='CBG_OBG'",

 if(len(二级渠道_国家)==0,"AND item_type_F='"+项目类别+"' and area_1_channel = '"+一级渠道_区域+"' ",

 "AND item_type_F='"+项目类别+"' and area_1_channel = '"+一级渠道_区域+"'and area_2_channel_F ='"+二级渠道_国家+"'")  )}

) A

group by data_class,year_,month_,item_type,item_type_F,area_1_channel,area_2_channel_F,sale_type_class



以上是sql,当用户选择data_class参数时,如果选择了CBG或者OBG是,group by需要对area_1_channel,area_2_channel_F这两个字段进行分组,如果选择CBG_OBG则意味着选择的是所有数据,则不需要对后面两个下级字段进行分组,请问哪位大佬有好的实现办法

Kya 发布于 2021-1-29 14:20
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
shirokoLv6资深互助
发布于2021-1-29 14:50
GROUP BY data_class,year_,month_,item_type,item_type_F ${IF(data_class='CBG'||data_class='OBG'," ,area_1_channel,area_2_channel_F
",)}


  • Kya Kya(提问者) group by里面少了sale_type_class字段,但是加进去,还是现实不是group by 表达式
    2021-01-29 15:00 
  • shiroko shiroko 回复 Kya(提问者) 因为你字段还要再处理,如果没有group的字段是不能select的
    2021-01-29 15:02 
  • Kya Kya(提问者) 实现了,谢谢
    2021-01-29 15:10 
最佳回答
0
一心向明月Lv5见习互助
发布于2021-1-29 14:45

可以参考一下动态列

  • 3关注人数
  • 415浏览人数
  • 最后回答于:2021-1-29 14:50
    请选择关闭问题的原因
    确定 取消
    返回顶部