帆软对于这种查询有什么好的方便的方法吗?

如题,现在某个数据库会将数据按月份储存,如图结尾以"年份月份"结尾,结尾为temp的是本月的数据,即临时储存的,比如现在2月,在到3月份的时候会将temp中的数据复制进如m_1_customer_source_201902并清空temp表,在不使用union all的情况下如何连接查询呢?比如当用户查询20180501至20190101的该如何查询呢?同时查询条件比如where写在哪里呢?

9f510fb30f2442a710fcd992df43ad4bd1130212.jpg

----------------------------

这些表的表结构都是一样的


FineReport fuRyZ 发布于 2019-2-22 14:01 (编辑于 2019-2-22 14:02)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
wzh5788Lv4中级互助
发布于2019-2-22 15:36(编辑于 2019-2-22 15:49)

存储过程

1 查询阶段为20180501至20190101之间数据,用脚本列出20180501至20190101之间所有的年月,形成临时表


SELECT DISTINCT

date_format(

DATE_ADD(

'2018-05-01',

INTERVAL id MONTH

),

'%Y-%m'

) AS `TIME`

FROM

brand

WHERE

DATE_ADD(

'2018-05-01',

INTERVAL id MONTH

) <= '2019-01-01'

order by 1

brand这表需要有一个自增id  从 1开始 大多一点可以

2 游标轮询这个年月临时表,拼临时字符串方式查数据

        tmp就是年月字符串

        set @v_sql= concat('insert into alldata select * from m_1_customer_source_',tmp,' t ');   

        prepare stmt from @v_sql; 

        EXECUTE stmt;    

        deallocate prepare stmt;



3 游标循环里把每个月的数据放到某个临时表

4 最后返回那个临时表

最佳回答
1
zsh331Lv8专家互助
发布于2019-2-22 14:21
  • fuRyZ fuRyZ(提问者) 大神,那么每个月都要添加一次数据集了?有没有更好的办法呢?
    2019-02-22 14:32 
最佳回答
0
yh19931023Lv4中级互助
发布于2019-2-22 15:41

借助ETL可以实现。

20180501-20190101

我先取这两个时间点包括哪几个时间。

报表传参执行作业流程,每次动态生成表名(固定+时间点),按表名列表循环执行作业流程,写入中间表。

最佳回答
0
孤陌Lv6资深互助
发布于2019-2-22 15:42(编辑于 2019-2-22 15:43)

你这个应该是水平分表查询的时候 把表名变成动态参数就好了  表名称用下拉复选框控件 想查询那几个表就选择就好了


SELECT * FROM ${tab}
  • 8关注人数
  • 923浏览人数
  • 最后回答于:2019-2-22 15:49
    请选择关闭问题的原因
    确定 取消
    返回顶部