如果当前时间小于等于10号,数据默认是上月数据,大于10号为当月数据(IF嵌套)

If嵌套:

${if(ym ='年度累计',"and left(calmonth,4)=substring(now(),1,4) and calmonth <= concat(substring(now(),1,4),substring(now(),6,2))","and calmonth = '"+ ym +"'")}

以上逻辑再加两层层逻辑

筛选器等于“年度累计”的时候:

如果当前时间大于10号,数据展示当前年第一个月到本月数据,否则当前年第一个月到上月数据

筛选器等于“yyyyMM”的时候

如果当前时间大于10号,数据展示本月数据,否则展示上月数据

这两种情况IF如何嵌套实现呢?

FineReport 慧慧036103 发布于 2023-8-27 15:31
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
JL98Lv6中级互助
发布于2023-8-28 10:42(编辑于 2023-8-28 13:08)

MYSQL为例,通过CASE WHEN 判断使用条件:

${if(ym ='年度累计',"and CASE WHEN SUBSTRING(now(),9,2)>10 THEN left(calmonth,4)=substring(now(),1,4) and calmonth <= concat(substring(now(),1,4),substring(now(),6,2)) ELSE substring(now(),1,4) and calmonth

image.png

image.png

image.png

  • 慧慧036103 慧慧036103(提问者) 筛选年度累计,报错了
    2023-08-28 11:29 
  • JL98 JL98 回复 慧慧036103(提问者) 你什么数据库呢,是不是写错了,我这正常的
    2023-08-28 13:08 
  • JL98 JL98 回复 慧慧036103(提问者) 改成这样试一下 ${if(ym =\'年度累计\',\"and CASE WHEN SUBSTRING(now(),9,2)>10 THEN left(calmonth,4)=substring(now(),1,4) and calmonth <= concat(substring(now(),1,4),substring(now(),6,2)) ELSE left(calmonth,4)=substring(now(),1,4) and calmonth 10 THEN calmonth = \'\"+ ym +\"\' ELSE calmonth = \'\"+ ym +\"\'-1 END \")}
    2023-08-28 13:10 
  • 慧慧036103 慧慧036103(提问者) 回复 JL98 可以了,非常感谢
    2023-08-28 13:16 
  • 2关注人数
  • 355浏览人数
  • 最后回答于:2023-8-28 13:08
    请选择关闭问题的原因
    确定 取消
    返回顶部