繁体   English   中英

自联接更新 SQL 中的表

[英]Self join to update table in SQL

我有下表:

类别 数量 订单 等级
产品 0
第1部分 2 4 1
第2部分 3 5 1
第 1.1 部分 4 6 2
第 1.2 部分 5 7 2

如何使用数量和订单的总和(不包括 0 级的数量和订单)更新上表的 0 级行?

IE

类别 数量 订单 等级
产品 14(即2+3+4+5) 22(即4+5+6+7) 0
第1部分 2 4 1
第2部分 3 5 1
第 1.1 部分 4 6 2
第 1.2 部分 5 7 2

您可以使用使用子查询或 CTE 的 Update 语句,但我认为实际上您的表在没有任何 Id 的情况下不会如此简单(例如,将所有这些 Part* 链接到特定产品的 id。无论如何,如是:

Update myTable
   set Qty = agg.Qty, Orders=agg.Orders 
from (Select Sum(Qty) Qty, Sum(Orders) Orders from myTable where level > 0) agg
where level=0;
Update TableName
set     Qty = (select Sum(Qty) from TableName where Level<>0),
        Orders = (select Sum(Qty) from TableName where Level<>0 )
where Level = 0

UPDATE yourtablename set qty = 
(Select sum(qty) from yourtablename
Where level != 0),
orders = 
(Select sum(orders) from yourtablename
Where level != 0) 
where level = 0

暂无
暂无

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

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