SQL计算没有以正确的格式显示

时间:2012-04-19 11:18:00

标签: sql

我有700以下的SQL查询

declare @a decimal(10,0)
declare @b decimal(10,0)

set @a = 100 - 2 
set @a = @a / 14
set @a = @a * 100

set @a = ((100 - 2) / 14) * 100

select @a

我正在寻找的是返回85.714285等...

不太确定我哪里错了。

由于

4 个答案:

答案 0 :(得分:1)

您的声明有误:

declare @a decimal(10,0)
declare @b decimal(10,0)

您已指定长度,但不是小数位数,这是通过使用第二个值来完成的。

答案 1 :(得分:0)

将.0添加到最后一行的末尾,因为如果使用所有整数,SQL将隐式地将结果转换为int。

set @a = ((100 - 2) / 14) * 100.0

答案 2 :(得分:0)

将您的声明更改为包含小数位:

declare @a decimal(10,5)
declare @b decimal(10,5)

set @a = 100 - 2 
set @a = @a / 14
set @a = @a * 100

set @a = ((100 - 2) / 14) * 100

select @a

由于您的声明设置为10,0,因此您将不会获得小数位。

如果您希望答案为85.714 ...那么您需要将SQL更改为:

declare @a decimal(10,5)

set @a = 100.0 - 2.0 
set @a = @a / 14.0
set @a = @a * 100.0

set @a = 100.0 - ((2.0 / 14.0) * 100.0)

select @a

要获得您正在寻找的结果,您需要将.添加到其他值(2,14等),您将获得所需的值,还需要确保您的括号在正确的位置。

结果 - 85.71430

答案 3 :(得分:0)

700是正确的结果。

请再次检查!

((100 - 2) / 14) * 100 = 700

你计算了

100 - 2 / 14 * 100 = 85,...

您想使用此SQL查询。

set @a = 100 - 2.0 / 14 * 100