按项目分配数量

时间:2019-09-05 13:15:46

标签: oracle select distribute

我正在尝试使Oracle选择要在订单商品上分配数量,以使第一个商品的数量足以达到其限制,而剩余数量将在其他商品之间分配。

我有以下情况:

ORDER_ IT PRODUCT_CODE     QTY_ORDER  QTY_STOCK
------ -- --------------- ---------- ----------
682300 02 PA.000472-01            50         52
682300 03 PA.000472-01            50         52

我想达到这个目标:

ORDER_ IT PRODUCT_CODE     QTY_ORDER  QTY_STOCK
------ -- --------------- ---------- ----------
682300 02 PA.000472-01            50         50
682300 03 PA.000472-01            50         2

我什至都不知道该如何在Google上搜索。

1 个答案:

答案 0 :(得分:0)

您可以使用ROW_NUMBER分析函数。

尝试一下:

SELECT ORDER_, IT, PRODUCT_CODE, QTY_ORDER,
CASE WHEN QTY_STOCK - ((RN-1)*QTY_ORDER)  > QTY_ORDER 
THEN QTY_ORDER
ELSE QTY_STOCK - ((RN-1)*QTY_ORDER) 
END AS QTY_ORDER FROM
(Select ORDER_, IT, PRODUCT_CODE, QTY_ORDER, QTY_STOCK,
ROW_NUMBER() OVER (PARTITION BY ORDER_ ORDER BY IT) AS RN
FROM YOUR_TABLE);

干杯!