繁体   English   中英

SQL-Oracle:使用来自另一个表的值的总和更新表列-使用公共​​键列条件

[英]SQL-Oracle: Updating table column with sum of values from another table - using common key column/s criteria

晚上好,Stackoverflow团队/成员

Oracle版本:11g 11.1.0.6.0版-64位生产

我有两个表:ORDERS和ITEMS。

订单看起来像这样

命令

项目看起来像这样

在此处输入图片说明

表ORDERS具有1个或多个Order_Number,每个Order_Number被分配给至少一个或多个仓库。 Total_Value列应准确存储与订单号关联的项目值的总和。 实际上,ITEMS表通过parcel_code项目存储了特定order_number / s的值。

我的数据库有一个错误,该错误是将多个仓库分配给一个订单编号(例如,订单编号1和4)的订单未正确存储实际总值。

在我的情况下,我无法弄清将选择订单号的UPDATE语句,该订单号将从表ITEMS中获取总和,并通过parcel_code进行链接,并更新表ORDERS中的total_value列。

我更新的结果应该给这个:

餐桌订单我应该回来

订单号1:两行总计1120

两行的订单号4总价值:350

订单号2和3(因为它们是单个仓库订单)保持不变:50和20

伪代码:

更新ORDERS设置total_value =(从ITEMS I,ORDERS O中选择sum(I.item_value),其中O.parcel_code = I.parcel_code)

我还将更新在电子仓库上分配的订单,因为它们将完全相同。

我在看MERGE语句或INNER选择查询。 我面临的问题是我的更新必须是动态的。 这意味着不是由值驱动而是由列连接驱动,因为我可能必须创建一个每天更新的过程。

有人能帮我吗?

您需要将items和orders表连接在一起,然后选择order_number等于要更新的​​行(在表o1中)的所有item_values的总和。

update 
Orders o1
set o1.total_value = (
    select sum(i.item_value) from Items i
    join Orders o2 on o2.parcel_code = i.parcel_code
    where o2.Order_number = o1.Order_number
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM