Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何在SQL Server中正确舍入数字?_Sql Server_Formula - Fatal编程技术网

Sql server 如何在SQL Server中正确舍入数字?

Sql server 如何在SQL Server中正确舍入数字?,sql-server,formula,Sql Server,Formula,下面的图片示例,是否有一种方法可以使SQL Server中的总成本v1精确等于v2 我有一份简单的销售报告 成本有2位小数或4位小数 计数v2只是每个唯一项的计数v1之和 我在SQL Server中的总成本v1公式为: SUM(ROUND(([Cost]*(CAST([Count] as INT))), 2)) as 'Total Cost v1' 有没有办法修改上述公式,使最终的总数与v2相匹配? 否则,如果列表变大,数字上的差异就越大 计数的数据类型为十进制(10,4)。Cost的数据

下面的图片示例,是否有一种方法可以使SQL Server中的总成本v1精确等于v2

我有一份简单的销售报告

  • 成本有2位小数或4位小数
  • 计数v2只是每个唯一项的计数v1之和
我在SQL Server中的总成本v1公式为:

SUM(ROUND(([Cost]*(CAST([Count] as INT))), 2)) as 'Total Cost v1'
有没有办法修改上述公式,使最终的总数与v2相匹配? 否则,如果列表变大,数字上的差异就越大


计数的数据类型为十进制(10,4)。Cost的数据类型是money


您应该将公式更改为

ROUND(SUM([Cost]*(CAST([Count] as INT))), 2) as 'Total Cost v1'

您使用的是
DECIMAL/NUMERIC/MONEY
还是
FLOAT
数据类型?计数的数据类型是DECIMAL(10,4)。Cost的数据类型是money。但在我的公式中,我已经将计数转换为INT。不确定我还缺少什么。您缺少了。。。四舍五入时的分数。。。这是四舍五入的自然和合乎逻辑的结论。你永远不会用这种方式让数字匹配。