这是 SELECT 语句:
SELECT ROUND(ISNULL(SUM(Price),0),2) As TotalPrice
FROM Inventory
WHERE (DateAdded BETWEEN @StartDate AND @EndDate)
关于为什么不四舍五入到小数点后两位的任何想法?
这是 SELECT 语句:
SELECT ROUND(ISNULL(SUM(Price),0),2) As TotalPrice
FROM Inventory
WHERE (DateAdded BETWEEN @StartDate AND @EndDate)
关于为什么不四舍五入到小数点后两位的任何想法?
而不是ROUND(ISNULL(SUM(Price),0),2)
你可以尝试CAST(ISNULL(SUM(PRICE),0) AS DECIMAL (4,2))
价格是什么数据类型?
SELECT ROUND(123.4545, 2); -- = 123.4500
GO
SELECT ROUND(123.45, -2); -- = 100,00
GO
底层数据类型保持不变:您只需四舍五入但留下尾随零。
对于 2 个小数位输出,您需要 CAST to decimal(x, 2)
您的环境中的列可能存在编组问题。可能会尝试显式强制转换 CAST(ROUND(...) AS NUMERIC(18,4)) 甚至只是尝试将 0 设为 0.0。还要确保在应用程序中将列与正确的数据类型绑定。
所有酷的人都使用 COALESCE 而不是 ISNULL。COALESCE 是可移植的,您可以拥有任意数量的参数(不仅仅是两个!!)
无论如何,我不确定这是否只是一个示例,但如果在此阶段尚未四舍五入,您的数据也可能存在 DA 问题。