我在第三方产品的SQL Server 2008数据库上使用以下查询来生成一些报告。
SELECT ROUND(SUM(Price),0,1) AS SumNetPrice FROM Transactions
例如
SUM(Price): 1.2345678
ROUND(SUM(Price),0,1): 1
到目前为止,此工作正常并删除了所有小数位。事实上,即使我没有根据ROUND函数上的MSDN信息http://msdn.microsoft.com/en-us/library/ms175003.aspx指定第3个参数,结果也会被截断。
第三方公司现在已将Price列的数据类型从“real”更改为decimal(22,7)。不幸的是,这意味着即使我使用ROUND函数的truncate选项,我总是得到7位小数。所以现在我得到了:
ROUND(SUM(Price),0,1): 1.0000000
不应该ROUND(表达式,0,1)截断结果,所以我没有得到任何小数位?如何从SQL查询中的结果中删除这些小数位?
答案 0 :(得分:2)
为了让它按照之前的工作方式工作,将类型从十进制转换为实数。这是您更新的查询以获得所需的输出。
select Cast(ROUND(SUM(Price),0,1) as Real) AS SumNetPrice FROM Transactions
答案 1 :(得分:1)
SELECT CAST(ROUND(SUM(Price),0,1) AS DECIMAL(22,0)) AS SumNetPrice FROM Transactions