update fb_ba_factdata n set n.field55=(SELECT case when n.sapitemid is not null then
(SELECT max(t.field57)
FROM FB_BA_FACTDATA t WHERE t.TableID='ZVXSZLJSB4' AND t.itemid = n.sapitemid and t.companyid=n.companyid and t.accyear=n.accyear and t.accperiod=n.accperiod )
else
(select nvl(n.Field52,0)*nvl(n.field53 ,0)*nvl(n.field54,0) FROM FB_BA_FACTDATA t WHERE t.tableid=n.tableid and n.itemid = t.itemid and t.companyid=n.companyid and t.accyear=n.accyear and t.accperiod=n.accperiod)
end
from dual)
WHERE n.tableid='10PROBUD' and n.companyid='03' and n.accyear='2008' and n.accperiod='04'
可以看到上面最外层可以update 多个不同itemid的纪录,但此时会出现错误:ora-01438:值大于此列指定的允许精确度但如果外层update加上n.itemid='<具体某一列值>' 那么这条语句不会抱错
其中子查询都是查到一条纪录。请各位it届高手指导!! 小女子在此谢过
解决方案 »
- ORA-01031: insufficient privileges怎么处理?
- 有关BLOB字段导入
- 如何将一个机子上的oracle数据库中的一个表导入到另一个机子上的oracle数据库中?
- 请问ORACLE 8i在WINDOWS 2003 SERVER中安装后无法启动服务的问题!
- 在WIN ME下如何能起动Net8 Easy Config???
- 一个数据库要这么大??!!
- 在线等:哪里有oracle软件的下载呀?应者有分!
- oracle中的空值怎么写条件?
- 这个exists用法错在哪里?
- 数据库全库备份应该如何恢复啊?
- sql动态分类汇总统计各个部门每月消费的资金的情况请高手指教!
- 求一SQL语句
2.不用具体值就会报错...第一个问题
n.itemid看来是主键,它都是一个值,子查询条件一样,肯定只有一个值.
第二个问题
肯定有以某些n.itemid查出来的值超出了update列的精度,
而那个具体值刚好没有超出精度.应该确认n.field55精度,把子查询结果round一下就好了.