无舍入的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 ...