[英]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.