SQL 求和到小数点后 2 位

Summing to 2 decimal places in SQL

我生成了一份总计 SQL 的报告,我想将结果保留到小数点后两位,但我无法做到。

我已经尝试了几种代码,但总和仍然以最接近的 10 的形式出现。

我试过以下方法

cast (sum(Amount) as decimal(10,2))
convert(sum(Amount) as decimal(10,2))

这是我的代码示例以及预期的数字:

select YYYMM, CustomerID, SUM(Amount) as TotalAmount
from (
   SELECT  a.subscriberid,yyymm
    ,sum(Amount)/(1024*1024*1024) as Amount

关于这只是一小部分编码,由于数据敏感性,不得不更改一些计算

当前输出

YYYMM   CustomerID   TotalAmount
202010     1234           0
--Expected Output
YYYMM   CustomerID   TotalAmount
202010     1234           0.45

有人可以帮助我吗?我正在使用 Microsoft SQL Server Management Studio

很可能,amount是一个整数,而你正面临整数除法。当一个除法的两个操作数都是整数时,SQL 服务器(和许多其他数据库)生成一个整数结果:基本上,3/40,而不是 0.75.

您可以通过将其中一个操作数转换为小数来强制使用小数上下文 - 然后 cast() 结果:

cast(sum(amount) / (1024.0 * 1024 * 1024) as decimal(10, 2)) as total_amount