【发布时间】:2018-07-19 08:28:21
【问题描述】:
我原来的表格是这样的:
week volume cost
1 11 null
2 32 null
3 80 null
4 75 null
5 50 null
...
51 28 null
我想通过应用如下更智能的规则来更新成本字段:
if volume < 13, then use a rateA (loose shipment price)
if volume >= 13 and < 25, then use a rateB (20' container price)
if volume >= 25 and < 45, then use a rateC (40' container price)
我想根据“量”灵活使用以上3种不同的费率来获得最低的成本。例如,在第 4 周,“剩余体积”最初是 75,我应该应用一个 40' 容器成本来加载一部分体积。那么“剩余体积”是 30,我应该应用 20' 容器成本来加载其余部分。那么“剩余量”是 5,我应该应用宽松的运输价格,一直这样直到“剩余量”=0。这样做会给我最好的组合,以最小化每周的成本。因此,需要对“剩余音量”应用一个 while 循环,它可以指示如何选择不同的速率。
最终更新后的表格应如下所示:
week volume cost
1 11 rateA
2 32 rateB + rateA
3 80 rateC + rateB + rateA
4 75 rateC + rateB + rateA
5 50 rateC + rateA
...
51 28 rateB + rateA
【问题讨论】:
-
循环绝对不是处理这个问题的最佳方式。但我不能提供任何真正的建议,因为这太模糊了。这是一个很好的起点。 spaghettidba.com/2015/04/24/…
-
@Jack 我想我遵循您的逻辑,但是您的方法有太多变化。从逻辑上讲,我不同意你的例子,比如一周是 3 - '3 80 rateC + rateB + rateA' - 这不应该是 rateC + rateC 吗?这些是能够提供帮助所需的详细信息。
-
抱歉打错了。 40' 集装箱的最大容量限制实际上是 45。
标签: sql-server while-loop sql-update