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/4
是 0
,而不是 0.75
.
您可以通过将其中一个操作数转换为小数来强制使用小数上下文 - 然后 cast()
结果:
cast(sum(amount) / (1024.0 * 1024 * 1024) as decimal(10, 2)) as total_amount
我生成了一份总计 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/4
是 0
,而不是 0.75
.
您可以通过将其中一个操作数转换为小数来强制使用小数上下文 - 然后 cast()
结果:
cast(sum(amount) / (1024.0 * 1024 * 1024) as decimal(10, 2)) as total_amount