22,210
社区成员
发帖
与我相关
我的任务
分享
/*
--原数据
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
*/
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