预计发货日期 - 光标?

时间:2011-01-06 14:56:04

标签: sql tsql cursor

我被要求提供一些“智能”逻辑来估算已经延期交货的商品的发货日期。他们希望我使用的逻辑是:

Sky / Real Fancy Display中的Pie 如果我们的延期交货订单多于任何单一采购订单,则计算哪些销售订单将提交到哪个入库采购订单并显示相应的日期。 示例:

Open Sales Orders
SO#  123455 – Req Date 12/15/10 – PN A000123  Backorder 2 pcs.
SO#  123462 – Req Date 12/16/10 – PN A000123  Backorder 7 pcs.
SO#  123941 – Req Date 12/17/10 – PN A000123  Backorder 4 pcs.

Open Purchase Orders
PO#  987654 – Promised 12/29/10 – 5 pcs.
PO#  994258 – Promised 1/15/11 – 15 pcs.

Dates we should be displaying
SO#  123455 – ESD = 12/29/10
SO#  123462 – ESD = 1/15/11
SO#  123941 – ESD = 1/15/11

我知道我可以创建一个临时表来保存打开的采购订单信息,然后使用游标按请求日期按顺序获取每个打开的销售订单,然后获得满足所需数量的最早采购订单,然后减少该数量从该PO。为了使事情变得更有趣,我们将发运部分,所以如果第一个订单是7,我们将发货5并将剩余的2放在延期交货。因此,它将类似于“5月12日至29日发货,其余2件将于2011年1月15日发货”。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我怀疑这可以通过单个SQL语句来完成,但是它会非常复杂,你可以尝试编写它。 (在我发布这篇文章的几分钟内,有人可能会证明我错了。)循环程序代码似乎是这一天的顺序。

就在我的头顶,我可能做的事情就像:

  • 生成销售 Purcahse活动的列表,按日排序,然后按(购买然后活动)
  • 遍历此列表,跟踪计数器(可用单位)以及履行和未履行义务列表(销售)
  • 在处理每一行时,跟踪可用项目池,根据需要递增(购买)或递减(销售)
  • 当每个销售项目出现时,根据当时可用的零件数量,创建新条目(新表?),显示履行,无论是完整还是部分,和/或跟踪尚未完全处理的销售情况

这都是估计/预测,所以你不需要保留这个例程生成的数据,对吗?