MOQ分配

rmljoe 2010-05-26 04:19:17

/*
--原数据
ID fldMonth0 fldmonth1 fldmonth2 fldmonth3 fldmonth4 fldmonth5 fldMOQ
---- ----------- ----------- ----------- ----------- ----------- ----------- -----------
1 20 3144 5100 0 4800 8800 2000



--希望得到的结果
ID fldMonth0 fldmonth1 fldmonth2 fldmonth3 fldmonth4 fldmonth5
---- ----------- ----------- ----------- ----------- ----------- -----------
1 2000 2000 6000 0 4000 8000
*/

说明:一般下订单都会有个MOQ(最小定单数量),假设现在最小订单数量为2000,第一个月为了20,要买2000,最二个月需要3144,但因为第一个月多订的1980,需求变成1164,所以只要订2000,以此类推。
希望使用SQL2000可用的简单语句实行。谢谢。
...全文
152 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2010-05-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 rmljoe 的回复:]
SQL code
select

case when fldMPQ > 0 then case when fldmonth0 > 0 then (floor(fldmonth0 / fldMPQ) + 1) * fldMPQ else 0 end else fldmonth0 end as Month0,
case when fldMPQ > 0 then case when (fldm……
[/Quote]

强大
htl258_Tony 2010-05-26
  • 打赏
  • 举报
回复
GX
nalnait 2010-05-26
  • 打赏
  • 举报
回复
rmljoe 2010-05-26
  • 打赏
  • 举报
回复
select 

case when fldMPQ > 0 then case when fldmonth0 > 0 then (floor(fldmonth0 / fldMPQ) + 1) * fldMPQ else 0 end else fldmonth0 end as Month0,
case when fldMPQ > 0 then case when (fldmonth0 + fldmonth1 - (case when fldmonth0 > 0 then (floor(fldmonth0 / fldMPQ) + 1) * fldMPQ else 0 end)) > 0
then (floor((fldmonth0 + fldmonth1 - (case when fldmonth0 > 0 then (floor(fldmonth0/ fldMPQ) + 1) * fldMPQ else 0 end)) / fldMPQ) + 1 ) * fldMPQ else 0 end else fldmonth1 end as Month1,
case when fldMPQ > 0 then case when (fldmonth0 + fldmonth1 + fldMonth2 - (case when fldmonth0 + fldMonth1 > 0 then (floor((fldmonth0 + fldMonth1)/ fldMPQ) + 1) * fldMPQ else 0 end)) > 0
then (floor((fldmonth0 + fldmonth1 + fldMonth2 - (case when fldmonth0 + fldMonth1 > 0 then (floor((fldmonth0 + fldMonth1) / fldMPQ) + 1) * fldMPQ else 0 end)) / fldMPQ) + 1 ) * fldMPQ else 0 end else fldmonth2 end as Month2,
case when fldMPQ > 0 then case when (fldmonth0 + fldmonth1 + fldMonth2 + fldMonth3 - (case when fldmonth0 + fldMonth1 + fldMonth2 > 0 then (floor((fldmonth0 + fldMonth1 + fldMonth2)/ fldMPQ) + 1) * fldMPQ else 0 end)) > 0
then (floor((fldmonth0 + fldmonth1 + fldMonth2 + fldMonth3 - (case when fldmonth0 + fldMonth1 + fldMonth2 > 0 then (floor((fldmonth0 + fldMonth1 + fldMonth2) / fldMPQ) + 1) * fldMPQ else 0 end)) / fldMPQ) + 1 ) * fldMPQ else 0 end else fldmonth3 end as Month3,
case when fldMPQ > 0 then case when (fldmonth0 + fldmonth1 + fldMonth2 + fldMonth3 + fldMonth4 - (case when fldmonth0 + fldMonth1 + fldMonth2 + fldMonth3 > 0 then (floor((fldmonth0 + fldMonth1 + fldMonth2 + fldMonth3)/ fldMPQ) + 1) * fldMPQ else 0 end)) > 0
then (floor((fldmonth0 + fldmonth1 + fldMonth2 + fldMonth3 + fldMonth4 - (case when fldmonth0 + fldMonth1 + fldMonth2 + fldMonth3 > 0 then (floor((fldmonth0 + fldMonth1 + fldMonth2 + fldMonth3) / fldMPQ) + 1) * fldMPQ else 0 end)) / fldMPQ) + 1 ) * fldMPQ else 0 end else fldmonth4 end as Month4,
case when fldMPQ > 0 then case when (fldmonth0 + fldmonth1 + fldMonth2 + fldMonth3 + fldMonth4 + fldMonth5 - (case when fldmonth0 + fldMonth1 + fldMonth2 + fldMonth3 + fldMonth4 > 0 then (floor((fldmonth0 + fldMonth1 + fldMonth2 + fldMonth3 + fldMonth4)/ fldMPQ) + 1) * fldMPQ else 0 end)) > 0
then (floor((fldmonth0 + fldmonth1 + fldMonth2 + fldMonth3 + fldMonth4 + fldMonth5 - (case when fldmonth0 + fldMonth1 + fldMonth2 + fldMonth3 + fldMonth4 > 0 then (floor((fldmonth0 + fldMonth1 + fldMonth2 + fldMonth3 + fldMonth4) / fldMPQ) + 1) * fldMPQ else 0 end)) / fldMPQ) + 1 ) * fldMPQ else 0 end else fldmonth5 end as Month5
from #temp1

自己做出来了

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧