2

我在第三方产品的 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 方公司现在已将价格列的数据类型从“真实”更改为小数 (22, 7)。不幸的是,这意味着即使我使用 ROUND 函数的截断选项,我也总是得到 7 个小数位。所以现在我得到:

 ROUND(SUM(Price),0,1): 1.0000000

ROUND(expression,0,1) 不应该截断结果,所以我没有得到任何小数位吗?如何从 SQL 查询的结果中删除这些小数位?

4

2 回答 2

2

为了使它像以前那样工作,是将类型从十进制转换为实数。这是您更新的查询以获得所需的输出。

select Cast(ROUND(SUM(Price),0,1) as Real) AS SumNetPrice FROM Transactions
于 2012-07-06T15:40:27.290 回答
1
SELECT CAST(ROUND(SUM(Price),0,1) AS DECIMAL(22,0)) AS SumNetPrice FROM Transactions
于 2012-07-06T15:44:23.157 回答