You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle中向T1表Change列插入自表计算数据遇ORA-00936错误

错误原因分析与正确实现方案

错误原因

  • 语法错误:INSERT ... VALUES语法不支持嵌套子查询,VALUES仅用于指定常量值组成的行,基于查询结果的批量操作应直接使用INSERT ... SELECT,无需VALUES关键字。
  • 逻辑冗余:你写的CASE语句完全多余,Close - open本身就能直接得到两者的差值,无论open和Close的大小关系,不需要分条件判断。
  • 需求误解:你的目标是更新现有行的Change列值,而非插入新行,原表中Change列已存在且仅为空值,因此使用INSERT语句是错误的,应使用UPDATE语句修改现有数据。

正确实现方案

直接使用UPDATE语句更新每一行的Change列,计算Close与open的差值即可:

UPDATE T1
SET Change = Close - open;

如果需要按Datetime顺序更新(注:此场景下排序不影响计算结果,因为每行的差值计算独立),Oracle支持带ORDER BY的UPDATE:

UPDATE T1
SET Change = Close - open
ORDER BY Datetime;

内容的提问来源于stack exchange,提问作者Logan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:10:10