首页 > 解决方案 > 在项目上分配数量

问题描述

我正在尝试让一个 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

我什至不知道如何在谷歌上搜索这个。

标签: oracleselectdistribute

解决方案


您可以使用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);

干杯!!


推荐阅读