在我输出服务合约时数的报告中,我需要将合约时间缩短。
目前我从Navision获得了“合同时间”字段。我在这几个小时内增加了10%(公司政策),这导致我们可以用几个小时向该客户开账单。
然而,通过这样做,我得到了非常奇怪的合同时间(10.04,28.82,9.57,...) 现在有一个想法,我们将这些数字四舍五入为.25,.50,.75或.00 但它需要总是围捕。
10.04应该导致10.25
28.82应该导致29.00
9.57应该导致9.75
我通过ROUND(@value/25,2)*25
尝试了这一点,但这并没有给我必要的结果。
有人可以给我一些关于如何处理这个问题的额外提示吗?
答案 0 :(得分:4)
您可以使用CEILING
功能代替ROUND
,它会"向上"你的数字如果在另外两个人之间,即使他们是更接近"到较小的数字。
你的整体逻辑将转向"季度"看起来不错,但是ROUND
功能会选择最接近的功能,而不是"下一个更大的功能"。
另外,您可以使用第二个参数进行回合以满足您的需求,但是您不能使用天花板,因此您必须更改一些数字。
所以,在你的情况下:
CEILING(@value * 4) / 4
应该这样做。
编辑(感谢@HABO):如果您处理负数,请注意,这仍将围绕向上(-10.3
将成为-10.25
)。如果你需要在这种情况下向下舍入以使它看起来像是正面(即-10.3
到-10.5
),你可以使用这种变化处理这两种情况:
SIGN(@value) * CEILING(ABS(@value) * 4) / 4
其他注意事项:
CEILING
替换为FLOOR