可不可以实现自动查表,就是当表存在再查找不存在就不查

当前MYSQL数据库是每月生成一张表,想实现如果当前时间是7月,数据库中只有1-7月的月表,因为8月后的表没有,会导致查询报错。是否可以先写好相关条件查询语句,只执行当前时间以前的查询语句,当前时间以后的不执行。到8月时执行到8月的查询语句,9月后的不执行十二个月份是在单元格写死的,然后每个月拖每个月对应的表以及字段,就是不太理解如果没有表没有生成要怎么对应上

image.pngimage.pngimage.png

FineReport yzm802555 发布于 2024-7-8 10:42 (编辑于 2024-7-8 14:55)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
用户k6280494Lv6资深互助
发布于2024-7-8 10:45(编辑于 2024-7-8 14:51)

${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","")}

等等

  • yzm802555 yzm802555(提问者) 他不是根据今天所在的月份来查的,是根据 比如今天是7月份 那么需要把1-7月份的7个表都查出来
    2024-07-08 14:49 
  • yzm802555 yzm802555(提问者) 这个还能实现吗
    2024-07-08 14:50 
  • 用户k6280494 用户k6280494 回复 yzm802555(提问者) 把判断条件等于改成大于等于即可
    2024-07-08 14:51 
  • 用户k6280494 用户k6280494 回复 yzm802555(提问者) 看修改答案,我值写了三个月的,你把4-12的补充一下即可
    2024-07-08 14:52 
  • yzm802555 yzm802555(提问者) 回复 用户k6280494 麻烦帮忙看一下我补充的图片 我是要写到一个数据源中吗
    2024-07-08 14:57 
最佳回答
0
年年plusLv5中级互助
发布于2024-7-8 10:51(编辑于 2024-7-8 16:33)

我是这么处理的,就是有一张空表和按月存带后缀的,如果小于等于当前月就是表名+后缀,如果不在时间范围内,就是查不带后缀的表。

select * from ${if(month(你的日期参数)<=month(now()),”tabname“,”CONCATENATE(”tabname“,month(你的日期参数))“}

最佳回答
0
浪哩浪Lv4见习互助
发布于2024-7-8 16:45

数据表可以进行把表名写成参数,月份设置成下拉框参数,表名成动态的,如下写法,即可写一个数据集select *  from "${table}"

或者下列写法  参数YF 月份大于7,就查询表table,否则就查询为空。写12个月的数据集,写死表名或者动态获取table表名,12个月的表名肯定是有规律的,所以写成动态表名比较好。${IF(YF>7,"select *  from "+table,"select null  from  dual")}

  • 4关注人数
  • 236浏览人数
  • 最后回答于:2024-7-8 16:45
    请选择关闭问题的原因
    确定 取消
    返回顶部