日期控件问题求助!!!

用日期控件查询酒店的当日营业日报,当日今年的数据都能正常显示,但是去年数据和今年数据要进行比对,而且都在同一行,所以去年的数据不显示,有什么解决的办法?捕获.PNG

FineReport 18504762929 发布于 2019-12-4 13:59
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
qhlLv6中级互助
发布于2019-12-4 14:34

如果数据量较大,建议在SQL里处理,可以用left join的方式,把上年同一天的数据查出来,如果是oracle,大体可以按照这样写:

select 今年日期字段,其他字段,

去年日期字段,其他字段

from 表名 a

left join 表名(可以是同张表) b

on a.今年日期字段=ADD_MONTHS(b.日期字段,12)


最佳回答
0
LSQ000Lv5中级互助
发布于2019-12-4 14:02

看输出的sql语句是怎么样的

  • 18504762929 18504762929(提问者) 直接在模板上添加的时间单日查询控件,数据集没操作
    2019-12-04 14:06 
  • 18504762929 18504762929(提问者) 比如说我选择的时间是2019-10-01,这个查询2019年的数据是正常显示的,但是2018-10-01也绑定了同一个日期控件,所以2018-10-1是没有数据显示的,有没有解决的方法?
    2019-12-04 14:08 
  • LSQ000 LSQ000 回复 18504762929(提问者) 你是说你的表格用的是2个数据集,然后使用的都是time这个参数查询,前部分直接用参数的值,后部分要用参数值减去一年?
    2019-12-04 14:17 
  • 18504762929 18504762929(提问者) 回复 LSQ000 是这样的
    2019-12-04 14:21 
  • LSQ000 LSQ000 回复 18504762929(提问者) Mysql数据库 第一个数据集条件:where 时间 = \'${time}\' 第二个数据集条件:where 时间 = DATE_SUB(\'${time}\',INTERVAL 1 year),此时数据库的时间格式是yyyy-MM-dd 假如你的数据库事件格式是yyyyMMdd,那么查询语句的日期要先格式化,即where 时间 = DATE_FORMAT(DATE_SUB(\'${time}\',INTERVAL 1 year),\'%Y%m%dd\')
    2019-12-04 15:43 
最佳回答
0
凌建Lv7高级互助
发布于2019-12-4 14:08

去年的日期单独一个过滤,然后数据集参数使用公式YEARDELTA($控件名,-1),这样查询的时候就可以传的去年的日期值

  • 18504762929 18504762929(提问者) 这个方法我用了,是在2018年日期单元格设置的,但是不起作用啊?您是指在数据集查询中用sql语句来写吗?
    2019-12-04 14:12 
  • 凌建 凌建 回复 18504762929(提问者) 是的,我原先实在数据集里直接过滤的。然后数据集里参数公式里再套用就可以了
    2019-12-04 14:14 
  • 18504762929 18504762929(提问者) 回复 凌建 我用的是两个数据集,一个是2019年的,一个是2018年的,这个在数据集过滤我还真不会写
    2019-12-04 14:22 
最佳回答
0
孤陌Lv6资深互助
发布于2019-12-4 14:22

你这样就要用2个数据集了

另外个数据集

YEARDELTA($控件名,-1), 日期参数里要这样写

  • 5关注人数
  • 415浏览人数
  • 最后回答于:2019-12-4 14:34
    请选择关闭问题的原因
    确定 取消
    返回顶部