我们正在编写一个盘点系统,我们需要说明预期数量和计数数量之间是否存在差异,然后我们需要使用整数将差异按比例分配到记录中。例如:
预期:
Item | Quantity | Shelf
Banana | 2 | 1
Banana | 1 | 2
Banana | 2 | 3
数:共9个。我们需要在 3 条记录中按比例分配 9 个(整根香蕉),给出:
Item | Quantity | Shelf
Banana | 4 | 1
Banana | 2 | 2
Banana | 3 | 3
最终数量应与原始数量大致相同,并且始终以整根香蕉为单位。不存在负香蕉,但记录可以以 0 结尾。
以上只是一个例子。如果存在不同的数量,结果应该是相似的。
我们尝试了:
Ceiling(CountedQty * Expected/OriginalTotal) WHERE ROWNUMBER = 1
FLOOR(CountedQty * Expected/OriginalTotal) WHERE ROWNUMBER > 1
但这在 CountedQty - OriginalTotal > 2 时不起作用。
以前,这是在 C# 中使用循环完成的,并保持运行总数,由于业务需求,我们试图避免这种情况。