如何设置填报报表,每天的数据都为最近填写的一次数据

如下图所示,该报表是一张填报报表,例如只需填写一次,后面数据日期的数据会自动生成(如果当天的价格有变动,就会进行填报修改,之前日期的数据不会改变)

image.png

FineReport yzm282402 发布于 2023-7-9 12:14
1min目标场景问卷 立即参与
回答问题
悬赏:6 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
CD20160914Lv8专家互助
发布于2023-7-9 12:17(编辑于 2023-7-9 13:38)

那就在填报中设置填报属性:插入提交,而且不要设置主键,再增加一个你的提交时间字段(提交 时间字段主要是为了后面查询最近一次的数据。比如你1号会提交数据,那么提交时间会记录是1号,你10号提交数据,提交时间就是10号)

1、插入提交,不设置主键,同时将不修改价格的字段不要在填报录入价格,那么把没有修改价格的不入库

image.png

2、类似这如下这样进入数据库

image.png

3、再通过sql按日期取提交时间的最大值最后再关联取到数据,6-1号只会取到提交时间最大的一条,而6-1号34元那个在6-2号提交的数据是不会获取到的

image.png

---------------oracel中sql语句如下,其它的数据库参考着类似修改即可-------------

with  tmp as(

select '2023-06-01' as 日期,34 as 价格, '2023-06-02' as 提交时间 from dual union all

select '2023-06-02' as 日期,32 as 价格, '2023-06-02' as 提交时间 from dual union all

select '2023-06-03' as 日期,31 as 价格, '2023-06-02' as 提交时间 from dual union all

select '2023-06-04' as 日期,30 as 价格, '2023-06-02' as 提交时间 from dual union all

select '2023-06-05' as 日期,60 as 价格, '2023-06-02' as 提交时间 from dual union all

select '2023-06-06' as 日期,48 as 价格, '2023-06-02' as 提交时间 from dual union all

select '2023-06-07' as 日期,23 as 价格, '2023-06-02' as 提交时间 from dual union all

select '2023-06-08' as 日期,45 as 价格, '2023-06-02' as 提交时间 from dual union all

select '2023-06-09' as 日期,49 as 价格, '2023-06-02' as 提交时间 from dual union all

select '2023-06-01' as 日期,39 as 价格, '2023-06-08' as 提交时间 from dual)

select a.* from tmp a,

 (

select 日期,max(提交时间) as 提交时间 from tmp

group by 日期) b 

where 1=1

and a.日期=b.日期

and a.提交时间=b.提交时间

  • yzm282402 yzm282402(提问者) 如果2号-9号的价格没有变动的话 2-9号也要显示1号的数据
    2023-07-09 12:26 
  • CD20160914 CD20160914 回复 yzm282402(提问者) 参考类似上面的设置。比如你将提交时间字段增加到数据库以后,再将没有修改价格的数据不入库。那么再做数据关联就可以了,我是用oracel模拟的数据,mysql还有sql server其它数据库的思路也是一样的,都可以按这个来取数据。
    2023-07-09 13:33 
  • 2关注人数
  • 468浏览人数
  • 最后回答于:2023-7-9 13:38
    请选择关闭问题的原因
    确定 取消
    返回顶部