默认情况:(默认选“年度累计”)
如果当前时间小于等于10号,数据默认是上月数据,大于10号为当月数据
如果当前时间大于10号,数据为当月数据
筛选器情况:
当筛选器选择202308
当筛选器选择202307
数据为当月数据(202307)
当筛选器选择202306
数据为当月数据(202306)
SELECT * FROM TABLE WHERE 1=1 ${IF(LEN(控件名)==0,"",IF(DAY(TODAY())<=10," AND 日期字段='"+FORMAT(MONTHDELTA(FORMAT(CONCATENATE(控件名,"01"),"yyyy-MM-dd"),-1),"yyyyMM")+"'"," AND 日期字段='"+控件名+"'"))}
写个公式转换即可的,
新建立一个模板参数,用公式【其中$month为原参数】
IF(AND(DAY(TODAY())<=10,FORMAT(TODAY(),'yyyy-MM')=$month),FORMAT(MONTHDELTA(TODAY(),-1),'yyyy-MM'),$month)
然后后面写SQL直接用这个参数,比如select * from 表 where 年月='${years}'
${if(today()>FORMAT(today(),"yyyy-MM-10"),"and 字段='"+参数+"'","and 字段='"+FORMAT(MONTHDELTA(CONCATENATE(参数,"-01"),-1),"yyyy-MM")+"'")}
如果数据比较简单,可以根据条件,把上月和本月的数据都列出来,参数控制显示对应的列
--参考https://help.fanruan.com/finereport/doc-view-2079.html