在项目上分配数量
Distribute quantity over items
我正在尝试制作一个 oracle select 来分配订单项目的数量,使第一个项目有足够的数量达到其限制,剩余的数量将分配给其他项目。
我有以下场景:
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 上搜索这个。
可以使用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);
干杯!!
我正在尝试制作一个 oracle select 来分配订单项目的数量,使第一个项目有足够的数量达到其限制,剩余的数量将分配给其他项目。
我有以下场景:
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 上搜索这个。
可以使用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);
干杯!!