奇怪的oracle无效数字问题

整体sql 大致为:

select a,b,c

 from  A表 

inner join (

    select avg(b1) b1,c1,id

    from B表

    group by c1,id

) B on B.id = a.id  这种形式,但是奇怪的是单独执行里面的sql就会提示无效数字,但是整体执行就能成功。但是吧整体拿到另外一个sql里面使用union all拼接时又会报错无效数字

image.png

清语墨安 发布于 2022-11-9 15:59 (编辑于 2022-11-9 16:11)
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
吾姓独孤Lv6高级互助
发布于2022-11-9 16:01(编辑于 2022-11-9 16:05)

应该是你union all 拼接的内容和你整体查询的那个字段数据类型不一致吧

  • 清语墨安 清语墨安(提问者) 里面是有的,问题忘写上了
    2022-11-09 16:02 
  • 吾姓独孤 吾姓独孤 回复 清语墨安(提问者) 你放全点呢,你拼接的是什么内容,字段类型一样么,你单查询的时候是什么字段类型,你拼接的是字符串还是数字
    2022-11-09 16:05 
  • 清语墨安 清语墨安(提问者) 回复 吾姓独孤 放了两张图,我单独查询的时候,value字段是字符串,但是因为大部分是数字,所以我做了限制只查询为数字的那部分,然后单独执行这个sql就会报无效数字,但是整体查询就能正常显示
    2022-11-09 16:07 
  • 吾姓独孤 吾姓独孤 回复 清语墨安(提问者) 你不说有UNION ALL 的部分么,union all 的你用字符串试试把,同一个value字段怎么可能又是字符串类型,又是数字类型,即使他值是数字,你也得看字段的类型,字段是字符串类型,那他就算是数字也是字符串
    2022-11-09 16:10 
  • 清语墨安 清语墨安(提问者) 回复 吾姓独孤 那个就是用的字符串,我unionall那段是用to_char 转换的,现在是执行整体查询的时候发现会提示无效数字,所以我吧三个union all都分别单独执行查看是哪段报错,后面发现是这段报错,所以吧这段单独拉出来排查问题,就发现这一段本身就很奇怪,我截图里面的数据,整体执行是不会报错的,能够查出结果,但是如果单独执行里面的select* from (xxxx) a 这一段就会提示无效数字
    2022-11-09 16:14 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-11-9 16:00(编辑于 2022-11-9 16:04)

你 B表没得ID 了

AVG()  后面似乎还差 GROUP BY  C1

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

A表没有指定别名  后面只能用 A表.ID

  • 清语墨安 清语墨安(提问者) 写的草率了,重新完善了下
    2022-11-09 16:03 
  • Z4u3z1 Z4u3z1 回复 清语墨安(提问者) select a,b,c from A表 A inner join ( select avg(b1) b1,c1,id from B表 group by c1,id ) B on B.id = a.id
    2022-11-09 16:05 
  • 2关注人数
  • 654浏览人数
  • 最后回答于:2022-11-9 16:11
    请选择关闭问题的原因
    确定 取消
    返回顶部