Sql server 基于价格的四舍五入价格+;纳税结果

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 =

我在mssql中有一个表,其中包含项目的价格和税收%。我的任务是将所有项目四舍五入,其中价格+税收等于(价格(税收百分比/100)+价格)计算得出的最接近的五分之一。我遇到的问题是,他们希望在计算前更新价格,以找到最佳结果,例如:

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更好!