Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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求和_Sql_Sql Server_Rounding - Fatal编程技术网

无舍入的SQL求和

无舍入的SQL求和,sql,sql-server,rounding,Sql,Sql Server,Rounding,下面的查询给出了一个四舍五入的结果。如何将其修改为 停止取整 显示到小数点后2位。例如3.456->3.45 从发票详细信息中选择金额(发票详细信息.金额)作为总净额,其中发票详细信息.发票编号=|发票编号| 要将其格式化为两位数,您可以将其转换为货币 SELECT CAST(SUM(Invoice_Details.Amount) AS money) AS TotalNet_C FROM Invoice_Details WHERE Invoice_Details.Invoice_Numb

下面的查询给出了一个四舍五入的结果。如何将其修改为

  • 停止取整
  • 显示到小数点后2位。例如3.456->3.45

从发票详细信息中选择金额(发票详细信息.金额)作为总净额,其中发票详细信息.发票编号=|发票编号|

要将其格式化为两位数,您可以将其转换为货币

SELECT CAST(SUM(Invoice_Details.Amount) AS money) AS TotalNet_C 
FROM Invoice_Details
WHERE Invoice_Details.Invoice_Number = ||InvNo|| 
为了更具体,您可以使用
CONVERT
。 有关详细信息,请查看此项:

关于舍入:您希望裁剪数字,而不是将其舍入:

SELECT CAST(CAST(3.456 * 100 AS int) as float)/100
这就行了。那你的案子呢

SELECT CAST(CAST(CAST(SUM(Invoice_Details.Amount) * 100 AS int) as float)/100 AS money) AS TotalNet_C 
FROM Invoice_Details
WHERE Invoice_Details.Invoice_Number = ||InvNo||

您可以简单地将值四舍五入

  Str(ColumnName, 10, 2)

10-- this is for total length of your value.
2-- this is for how many decimal you want 

我认为你应该在sum_函数之前转换值,你可以使用数字/小数的参数,如下所示:

select SUM(TRY_CONVERT(decimal(18,2), value) from TestTable ...

选择1.0*SUM(Invoice_Details.Amount)作为Invoice_Details中的TotalNet_C,其中Invoice_Details.Invoice_Number=| | InvNo | |您的意思是要四舍五入吗?所以求和之后,你得到3.456,你希望它是3.45。如果你得到3.451,你希望它是3.45。总和本身不应四舍五入。如果你有2个值,比如说1.7489390和.0000001,你会得到1.7489391这个看起来应该可以,但是我在测试它时遇到了语法错误。我用“SELECT CAST(CAST(CAST(CAST)(CAST(SUM(3.456)*100 AS float)/100 AS money)AS TotalNet_C”测试它,它工作正常,你会得到什么错误?哎呀,我的错了。正在说有关选择的语法错误。。。我粘贴不正确,所以它开始选择。解决方案非常有效,谢谢:)
select SUM(TRY_CONVERT(decimal(18,2), value) from TestTable ...