这是SELECT语句:
SELECT ROUND(ISNULL(SUM(Price),0),2) As TotalPrice
FROM Inventory
WHERE (DateAdded BETWEEN @StartDate AND @EndDate)
为什么它没有四舍五入到小数点后两位的任何想法?
答案 0 :(得分:8)
而不是ROUND(ISNULL(SUM(Price),0),2)
您可以尝试CAST(ISNULL(SUM(PRICE),0) AS DECIMAL (4,2))
答案 1 :(得分:2)
什么数据类型是Price?
SELECT ROUND(123.4545, 2); -- = 123.4500
GO
SELECT ROUND(123.45, -2); -- = 100,00
GO
基础数据类型保持不变:您只是圆形但留下尾随零。
对于2位小数输出,您需要CAST到十进制(x,2)
答案 2 :(得分:1)
您的环境中的列可能存在编组问题。可以尝试一个显式的强制转换CAST(ROUND(...)AS NUMERIC(18,4))或者甚至只是尝试制作0 0.0。确保您在应用程序中使用正确的数据类型绑定列。
所有酷人都使用COALESCE而不是ISNULL。 COALESCE是便携式的,你可以拥有任意数量的参数(不只是两个!!)
无论如何,我不确定这只是一个例子,但如果你的数据在这个阶段尚未完成,你可能也会遇到DA问题。