【finereport】配置错误ORA-01722:无效数字

数据集预览一切正常,但是在报表预览报错:错误代码:11300001 数据集 [money_d1] 配置错误ORA-01722: 无效数字

具体sql如下:

select *

from

(

select t2.branch_id,t2.branch_name,to_char(t0.OP_TIME,'yyyymmdd')op_time,  t1.fee_name,t0.pay_money

from 

(select   fee_code,fee_name from  FINEREPORT.V_BOSS_OP_FEE_CATALOG  where regexp_like (fee_name,'装机工料费|配套建设费|三网建设费') )t1 

inner join

sidss.t2_ia_loginopr_pay t0  on t0.OP_TIME between to_date('${DATEBEGIN}','yyyymmdd') and to_date('${DATEEND}'+1,'yyyymmdd') and trim(t0.PAY_TYPE)=T1.FEE_CODE

inner join

SIBOSS.E1_BS_ORG4BRANCH t2 on t0.GROUP_ID=t2.ORG_ID

)

pivot(sum(pay_money) for fee_name in ('装机工料费' as 装机工料费,'配套建设费' as 配套建设费,'三网建设费' as 三网建设费))

   

   

   

   

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

oracle里面没有这种日期相加的写法的:

image.png

如下写是可以的。

image.png

然后如下就写会报你的错误:

image.png

--------你是想用户录入结束日期后,多加一天,并转换为yyyymmdd的格式。那么你的语句直接改成如下:---------

select 

*

from

(

select t2.branch_id,t2.branch_name,to_char(t0.OP_TIME,'yyyymmdd') op_time,  t1.fee_name,t0.pay_money

from 

(select   fee_code,fee_name from  FINEREPORT.V_BOSS_OP_FEE_CATALOG  where regexp_like (fee_name,'装机工料费|配套建设费|三网建设费') )t1 

inner join

sidss.t2_ia_loginopr_pay t0  

on t0.OP_TIME between to_date('${DATEBEGIN}','yyyymmdd') 

and to_date('${DATEDELTA(DATEEND,1)}','yyyymmdd') 

and trim(t0.PAY_TYPE)=T1.FEE_CODE

inner join

SIBOSS.E1_BS_ORG4BRANCH t2 on t0.GROUP_ID=t2.ORG_ID

)

pivot(sum(pay_money) for fee_name in ('装机工料费' as 装机工料费,'配套建设费' as 配套建设费,'三网建设费' as 三网建设费))

image.png

  • 肥耳朵象 肥耳朵象(提问者) 谢谢,我刚才也是相同的原理解决了问题的。。。在to_date()后+1.。。我会继续研究你给出的答案发,非常感谢。
    2022-12-07 11:41 
最佳回答
0
牛~~~Lv6中级互助
发布于2022-12-6 14:46

预览正常,打开就报错。

那你直接检查下传的参数值跟你预览的默认值就行了。应该就是某个参数值的类型导致的

  • 肥耳朵象 肥耳朵象(提问者) 怎么都找不出问题,已经把 t0.OP_TIME between to_date(\'${DATEBEGIN}\',\'yyyymmdd\') and to_date(\'${DATEEND}\'+1,\'yyyymmdd\') 改成t0.OP_TIME between to_date(\'${DATEBEGIN}\',\'yyyy-mm-dd\') and to_date(\'${DATEEND}\'+1,\'yyyy-mm-dd\') 。应为日期控件的格式是 YYYY-mm-dd
    2022-12-06 16:35 
最佳回答
0
weibwLv7高级互助
发布于2022-12-6 19:50

1、检查你的日期控件返回的格式是不是yyyymmdd,如果是yyyy-mm-dd的话你直接+1是不是不对?

2、如果你的格式是yyyy-mm-dd 的话你后面todate的格式化字符串也得改成 yyyy-mm-dd

综合建议直接将控件返回格式改为yyyymmdd,SQL就不需要改了。但是还是建议在数据集中查看一下最终执行SQL

image.png

  • 4关注人数
  • 667浏览人数
  • 最后回答于:2022-12-6 20:44
    请选择关闭问题的原因
    确定 取消
    返回顶部