我有以下SQL查询。
x86
运行此操作时,会生成以下结果;
查询从中获取信息的表中的所有字段(明显的日期除外)都定义为Money或Decimal类型。
实际上Box4的数字应该是1351.17,而box5的数字应该是-1351.17
有人能告诉我为什么我会看到我的结果,以及我应该做些什么才能得到我期待的结果?
由于
答案 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是整数计算,则它将是整数