TSQL-四舍五入到0.05和0.09的价格。更新正在生成空值?
我有一张桌子,价格表 列UPC(整数)、价格(货币) 我试图对价格列中的所有美分进行四舍五入,以.x5或.x9结尾 如果价格的最后一位是0-5,那么最后一位应该是5。TSQL-四舍五入到0.05和0.09的价格。更新正在生成空值?,sql,sql-server-2008,tsql,sql-server-2005,Sql,Sql Server 2008,Tsql,Sql Server 2005,我有一张桌子,价格表 列UPC(整数)、价格(货币) 我试图对价格列中的所有美分进行四舍五入,以.x5或.x9结尾 如果价格的最后一位是0-5,那么最后一位应该是5。 如果价格的最后一位是6-9,那么最后一位应该是9。 示例1.00变为1.051.21变为1.251.26变为1.29 我正在使用以下内容,但是在更新之后,我得到一些记录,其中价格被更新为NULL,我不知道为什么。它对95%的数据都能正常工作,但我看不到与数据不同的地方 我的想法是(一轮(价格,1,2)给了我价格中的美元。从总价格
如果价格的最后一位是6-9,那么最后一位应该是9。
示例
- 1.00变为1.05
- 1.21变为1.25
- 1.26变为1.29
UPDATE PriceTable
SET Price = ROUND(Price,1,2) +
CASE
WHEN Price -(ROUND(Price,1,2)) BETWEEN .00 AND .05 THEN .05
WHEN Price -(ROUND(Price,1,2)) BETWEEN .06 AND .09 THEN .09
END;
有更好的方法吗?我不明白为什么我会得到一个空的价格,而所有的美分的情况都应该考虑,即使他们没有,我仍然应该得到美元金额的价格与回合(价格,1,2)。我不应该需要其他,因为不应该有任何其他条件
谢谢
Marshall如果值以0.05
UPDATE PriceTable
SET Price = ROUND(Price,1,2) +
CASE
WHEN Price -(ROUND(Price,1,2)) BETWEEN .00 AND .05 THEN .05
ELSE .09
END;
当值以0.05
UPDATE PriceTable
SET Price = ROUND(Price,1,2) +
CASE
WHEN Price -(ROUND(Price,1,2)) BETWEEN .00 AND .05 THEN .05
ELSE .09
END;
一定有像1.255或1.295这样的价格掉入裂缝。@Yushioli-就是这样。谢谢。一定有像1.255或1.295这样的价格掉入裂缝。@Yushioli-就是这样。谢谢。效果很好。介于0.05和0.06之间的值是问题所在。谢谢你的帮助和快速响应。这很有效非常好。介于.05和.06之间的值是有问题的。感谢您的帮助和快速响应。