如何更新 USING sum 和子查询

How to update USING sum and subquery

我有一个 SQL 服务器 table 类似于:

InkitemNo CapacityUnit NewInk OldInk ReturnInk ProdQty Description UsedInk
204 Machine1 5 2 0 4000 Next ?
223 machine2 4 3 1 8000 NULL ?
204 Machine2 0 0 0 5000 Next ?
224 Machine2 4 0 2 3000 Next ?

我正在尝试使用以下公式编写查询:

使用墨水获得 1 行的示例

(5 + 2 -2 )* 4000/ 12000 = 1,67

得到 2 行用过的墨水

(4 + 3 - 1) = 6

使用 3 行墨水

(5 + 2 - 2) * 5000 / 12000 = 2,08

使用 4 行墨水

(5 + 2 - 2) * 3000 / 12000 = 1,25

(NewInk + OldInk - ReturnInk) * ProdQty / Sum(ProdQty)

条件为

时使用的公式

为了得到已用墨水的结果,我使用了这个查询

update InkEstimationSave =

(NewInk + OldInk - ReturnInk) * ProdQ​​ty / Sum(ProdQ​​ty]

但它不起作用。

根据您的逻辑查询,您要查找的是

fiddle link

    ;with cte as 
(
select *, SUM(ProdQty) OVER (partition by InkItemNo, Capacityunit) as denom 
from yourtable
)

update  cte
set UsedInk =
           (newInk+OldInk - ReturnInk) * ProdQty
          /denom
         *1.00 
where Description is NOT NULL

select * from Yourtable