停止 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) 没有任何意义。
我正在使用此 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) 没有任何意义。