0

我有以下 SQL 查询,在 700 处出现

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

4 回答 4

1

你的声明是错误的:

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

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

于 2012-04-19T11:21:19.260 回答
0

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

set @a = ((100 - 2) / 14) * 100.0
于 2012-04-19T11:19:51.880 回答
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,0then 您将没有小数位。

如果您希望答案是 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

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

结果 - 85.71430

于 2012-04-19T11:22:08.323 回答
0

700是正确的结果。

请再检查一次!

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

你计算过

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

你想使用这个 sql 查询。

set @a = 100 - 2.0 / 14 * 100
于 2012-04-19T11:23:53.847 回答