当前MYSQL数据库是每月生成一张表,想实现如果当前时间是7月,数据库中只有1-7月的月表,因为8月后的表没有,会导致查询报错。是否可以先写好相关条件查询语句,只执行当前时间以前的查询语句,当前时间以后的不执行。到8月时执行到8月的查询语句,9月后的不执行十二个月份是在单元格写死的,然后每个月拖每个月对应的表以及字段,就是不太理解如果没有表没有生成要怎么对应上
${if(month(today())>=1,"select * from 1y","")}
${if(month(today())>=2,"union all select * from 2y","")}
${if(month(today())>=3,"union all select * from 3y","")}
等等
我是这么处理的,就是有一张空表和按月存带后缀的,如果小于等于当前月就是表名+后缀,如果不在时间范围内,就是查不带后缀的表。
select * from ${if(month(你的日期参数)<=month(now()),”tabname“,”CONCATENATE(”tabname“,month(你的日期参数))“}
数据表可以进行把表名写成参数,月份设置成下拉框参数,表名成动态的,如下写法,即可写一个数据集select * from "${table}"
或者下列写法 参数YF 月份大于7,就查询表table,否则就查询为空。写12个月的数据集,写死表名或者动态获取table表名,12个月的表名肯定是有规律的,所以写成动态表名比较好。${IF(YF>7,"select * from "+table,"select null from dual")}