【问题标题】:Decrease quantity untill i use all qty减少数量直到我用完所有数量
【发布时间】:2021-09-19 03:30:54
【问题描述】:

我有一张订单表 (代码示例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

我有按 ORDER_NO 返回常量数量的函数

Get_Qty(ORDER_NO)

我想只在statemant(而不是更新表)上减少数量,直到我使用函数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

【问题讨论】:

  • 您的示例数据和问题似乎没有什么关系。
  • 对不起,我很难用英语解释。但是你在你的答案中做对了。比你。

标签: sql oracle oracle12c


【解决方案1】:

您希望从总数中减去累积总和。我认为:

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;

这首先减去最小数量的值。您的表没有排序列,但如果可用,您会使用它。

【讨论】:

  • 就是这样!!!!我只将最大更改为最小并按 id 更改顺序。谢谢!!!!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-15
  • 1970-01-01
  • 2018-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多