Sql server 基于价格的四舍五入价格+;纳税结果
我在mssql中有一个表,其中包含项目的价格和税收%。我的任务是将所有项目四舍五入,其中价格+税收等于(价格(税收百分比/100)+价格)计算得出的最接近的五分之一。我遇到的问题是,他们希望在计算前更新价格,以找到最佳结果,例如:Sql server 基于价格的四舍五入价格+;纳税结果,sql-server,Sql Server,我在mssql中有一个表,其中包含项目的价格和税收%。我的任务是将所有项目四舍五入,其中价格+税收等于(价格(税收百分比/100)+价格)计算得出的最接近的五分之一。我遇到的问题是,他们希望在计算前更新价格,以找到最佳结果,例如: price tax_percent price_tax_included **Result** 1.05 8.25% 1.13 price=1.07(price + tax =
price tax_percent price_tax_included **Result**
1.05 8.25% 1.13 price=1.07(price + tax = 1.15)
1.02 8.25% 1.10 Don't change, already rounded
1.12 8.25% 1.21 price=1.11(Price + tax = 1.20)
我想不出最好的方法来检查将价格更改为什么,以便计算出最接近的镍币以及基于其是否低于.02或高于.03美分的整数。您可以使用和%
测试仪:
create table nickels (price_tax_included decimal(9,2))
insert into nickels values (1.20),(1.21),(1.22),(1.23),(1.24),(1.25)
select price_tax_included
, toNickels = price_tax_included
+ case when price_tax_included % 0.05 > .02
then 0.05-(price_tax_included % 0.05)
else -1.00*(price_tax_included % 0.05)
end
from nickels
您可以将与%
测试仪:
create table nickels (price_tax_included decimal(9,2))
insert into nickels values (1.20),(1.21),(1.22),(1.23),(1.24),(1.25)
select price_tax_included
, toNickels = price_tax_included
+ case when price_tax_included % 0.05 > .02
then 0.05-(price_tax_included % 0.05)
else -1.00*(price_tax_included % 0.05)
end
from nickels
因为五分之一是一美元的二十分之一。数学很简单。。。变小以降低精度,然后以四舍五入的数量将其恢复
Declare @Amt money = 1.13
select round(@Amt*.2,2)/.2
返回
1.1500000
因为五分之一是一美元的二十分之一。数学很简单。。。变小以降低精度,然后以四舍五入的数量将其恢复
Declare @Amt money = 1.13
select round(@Amt*.2,2)/.2
返回
1.1500000
向我们展示你的尝试并解释它为什么不起作用。向我们展示你的尝试并解释它为什么不起作用。mod Zim的伟大使用mod Zim一如既往的优雅john。@scsimon谢谢你的笑容。天哪,约翰,你为什么要让一切变得如此美好和简单?好吧,我找到了一种方法,让你的答案缩小两个字符<代码>整数(含价格税/5,2)*5少两个“。@SqlZim更好!约翰一如既往的优雅。@scsimon谢谢你的笑容。天哪,约翰,你为什么要把一切都做得这么好和简单?好吧,我找到了一种方法,让你的答案缩小两个字符<代码>整数(含价格税/5,2)*5少两个“。@SqlZim更好!