我有以下 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 等...
不太确定我哪里出错了。
谢谢
我有以下 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 等...
不太确定我哪里出错了。
谢谢
你的声明是错误的:
declare @a decimal(10,0)
declare @b decimal(10,0)
您已指定长度,但未指定小数位数,这是通过使用第二个值完成的。
在最后一行的末尾添加 .0,因为如果使用所有整数,SQL 将隐式地将结果转换为 int。
set @a = ((100 - 2) / 14) * 100.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
then 您将没有小数位。
如果您希望答案是 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
700
是正确的结果。
请再检查一次!
((100 - 2) / 14) * 100 = 700
你计算过
100 - 2 / 14 * 100 = 85,...
你想使用这个 sql 查询。
set @a = 100 - 2.0 / 14 * 100