oracle - 在项目上分配数量
问题描述
我正在尝试让一个 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
我什至不知道如何在谷歌上搜索这个。
解决方案
您可以使用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);
干杯!!
推荐阅读
- javascript - 我想使用循环使单选按钮与列表中的一样多
- javascript - 如何在 Android 上解密这些文件名?
- javascript - 将事件指令添加到 svelte html 表达式?
- amazon-dynamodb - How to add items to a map in DynamoDB
- python - tkinter 窗口没有打开,没有错误信息
- java - 从 Double Array Java 中删除所有 0 值
- haskell - 忽略 :: Applicative f => fa -> f ()
- cuda - 为什么 nvcc 在编译期间删除我的 if 分支?
- go - 如何删除在 FaunaDB 中搜索到的文档?
- api - YouTube API 是否可以返回用户曾经发表的所有评论?