如何更新 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)
条件为
时使用的公式
- CapacityUnit 和 InkItemNo 相同
- 说明不为空
为了得到已用墨水的结果,我使用了这个查询
update InkEstimationSave =
(NewInk + OldInk - ReturnInk) * ProdQty / Sum(ProdQty]
但它不起作用。
根据您的逻辑查询,您要查找的是
;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
我有一个 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)
条件为
时使用的公式- CapacityUnit 和 InkItemNo 相同
- 说明不为空
为了得到已用墨水的结果,我使用了这个查询
update InkEstimationSave =
(NewInk + OldInk - ReturnInk) * ProdQty / Sum(ProdQty]
但它不起作用。
根据您的逻辑查询,您要查找的是
;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