停止 SUM 舍入 SQL

Stop SUM rounding SQL

我正在使用此 SELECT 语句创建 SQL 视图:

SELECT 
ISNULL(MONTH(DtRepairComplete), 0) AS RepairMonthNo
,ISNULL(FORMAT(DtRepairComplete, 'MMMM'), GETDATE()) AS RepairMonth
,ISNULL(YEAR(DtRepairComplete), 0) AS RepairYear
,ISNULL(SUM(IntRepairCosts), 0) AS TotalRepairCosts
,COUNT(IntIncidentID) AS RepairCount

FROM Incident d

GROUP BY FORMAT(DtRepairComplete, 'MMMM'),


YEAR(DtRepairComplete)
,MONTH(DtRepairComplete)
,FORMAT(DtRepairComplete, 'MMMM')

IntRepairCosts 是 table 上的数据类型 decimal(18,0)。当我将视图附加到我的项目时,它四舍五入为整数。由于这个值代表成本,我需要它是准确的,而不是四舍五入。

我可以停止此字段的舍入并仍然按查询求和吗?

提前谢谢你。

Decimal(18,0) 数据类型在小数点后没有数字,并且会四舍五入到最接近的整数值。这就是为什么你正在经历这个。您可以按如下方式进行测试:

Declare @Value decimal(18,0) = 123.678
Select @Value

你将获得 124

我不知道为什么有人会创建一种 Decimal(N,0) 而不是 int 或 bigint。当您处理金钱时,Decimal(N,0) 没有任何意义。