数据集里面${if}嵌套${if},写的格式是: if()直接嵌套,然后最外面加上${} ${if(,,if(,,))}。 但是里层的if里面不能加几个AND过滤条件,否则无法实现不选等于全选的total功能,请问这种有什么好的办法解决吗?具体如下: 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 end_gp else 0 end as 毛利额, case when data_class='${数据类型2}' then end_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_size,sale_type_class,qty,rev,end_gp from O_IFS_CBG_UNION_OBG_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_size,sale_type_class,qty,rev,end_gp from O_IFS_CBG_UNION_OBG_DUAN2DUAN ) a where data_class in ('${数据类型1}','${数据类型2}') and year_='${年}' and month_='${月}' and 1=1 ${if(项目类别='CBG_OBG',"AND item_type_F='CBG_OBG'", if(len(二级渠道_国家)==0,"AND item_type_F='"+项目类别+"' and area_1_channel = '"+一级渠道_区域+"' and area_2_channel_F ='"+"total"+"'", "AND item_type_F='"+项目类别+"' and area_1_channel = '"+一级渠道_区域+"'and area_2_channel_F ='"+二级渠道_国家+"'") )} 无法实现,如若删掉AND item_type_F='"+项目类别+"' and area_1_channel = '"+一级渠道_区域+"'过滤条件即可实现不选为全选的功能 |