减少数量直到我用完所有数量
Decrease quantity untill i use all qty
我有 table 个订单
(代码示例 http://sqlfiddle.com/#!4/0f284/3 )
ORDER_NO ITEM QTY
-----------------------
ORD1 ITEM1 2
ORD1 ITEM2 5
ORD1 ITEM3 7
ORD1 ITEM4 1
ORD2 ITEM1 2
ORD2 ITEM2 2
我的功能是 return constatn qty by ORDER_NO
Get_Qty(ORDER_NO)
我只想在声明中减少数量(不更新 table),直到我使用函数 Get_Qty
中的所有数量
结果应该是
ORDER_NO ITEM QTY GET_QTY QTY_RESULT
---------------------------------------------------
ORD1 ITEM1 2 10 0 (left 10 - 2 = 8)
ORD1 ITEM2 5 10 0 (left 8 - 5 = 3)
ORD1 ITEM3 7 10 4 (left 3 - 7 = - 4) --if negative use 0
ORD1 ITEM4 1 10 1 (left 0)
ORD2 ITEM1 2 3 0 left (3- 2 = 1)
ORD2 ITEM2 2 3 1 left (1 - 2 = -1) --if negative use 0
select o.order_no,
o.item,
o.qty - Get_Qty(order_no)
from Orders o
上面的代码示例 http://sqlfiddle.com/#!4/0f284/3
您想要从总数中减去的累计总和。我认为:
select o.order_no, o.item,
greatest(Get_Qty(order_no) - sum(qty) over (partition by order_no order by id), 0)
from Orders o;
这首先减去最小数量的值。您的 table 没有排序栏,但如果有的话您会使用它。
我有 table 个订单 (代码示例 http://sqlfiddle.com/#!4/0f284/3 )
ORDER_NO ITEM QTY
-----------------------
ORD1 ITEM1 2
ORD1 ITEM2 5
ORD1 ITEM3 7
ORD1 ITEM4 1
ORD2 ITEM1 2
ORD2 ITEM2 2
我的功能是 return constatn qty by ORDER_NO
Get_Qty(ORDER_NO)
我只想在声明中减少数量(不更新 table),直到我使用函数 Get_Qty
中的所有数量结果应该是
ORDER_NO ITEM QTY GET_QTY QTY_RESULT
---------------------------------------------------
ORD1 ITEM1 2 10 0 (left 10 - 2 = 8)
ORD1 ITEM2 5 10 0 (left 8 - 5 = 3)
ORD1 ITEM3 7 10 4 (left 3 - 7 = - 4) --if negative use 0
ORD1 ITEM4 1 10 1 (left 0)
ORD2 ITEM1 2 3 0 left (3- 2 = 1)
ORD2 ITEM2 2 3 1 left (1 - 2 = -1) --if negative use 0
select o.order_no,
o.item,
o.qty - Get_Qty(order_no)
from Orders o
上面的代码示例 http://sqlfiddle.com/#!4/0f284/3
您想要从总数中减去的累计总和。我认为:
select o.order_no, o.item,
greatest(Get_Qty(order_no) - sum(qty) over (partition by order_no order by id), 0)
from Orders o;
这首先减去最小数量的值。您的 table 没有排序栏,但如果有的话您会使用它。