SQL舍入似乎没有按预期工作

时间:2016-10-04 13:36:10

标签: sql sql-server-2014-express

我有以下SQL查询。

x86

运行此操作时,会生成以下结果;

enter image description here

查询从中获取信息的表中的所有字段(明显的日期除外)都定义为Money或Decimal类型。

实际上Box4的数字应该是1351.17,而box5的数字应该是-1351.17

有人能告诉我为什么我会看到我的结果,以及我应该做些什么才能得到我期待的结果?

由于

2 个答案:

答案 0 :(得分:3)

@Box4  DECIMAL
       ^^^  here is your problem

您从未向DECIMAL类型提供超过小数点的任何精度。因此,SQL Server显示超过小数点的零位精度值,即整数。

由于您似乎需要两位小数的精度,请尝试使用此声明:

@Box4  DECIMAL(10,2)

答案 1 :(得分:0)

请你试试

SET @Box4 = (SELECT (ROUND(SUM(vt.VatInput * 1.0),2) + @Box2) FROM VatTransactions vt WHERE vt.VatTransactionDate BETWEEN @StartDate AND @EndDate)

您会注意到我将列值乘以十进制数1.0 这会将结果转换为十进制数 否则,如果VatInput是整数计算,则它将是整数