1

我需要使用查询中的两个值执行计算,然后将其存储到变量中。我想知道如何在 SQL 中做到这一点。这是我迄今为止尝试过的:

DECLARE @result DECIMAL
SELECT @result = val2 / val1 from table

问题是输出错误。

SELECT @result    
Output: 0

好像我不使用变量一样,输出是正确的。

SELECT val2 / val1 from table
Output: 0.0712

有什么想法我在这里出错了吗?

4

3 回答 3

3

小数的默认精度为 0(请参见此处)。

试试这个:

DECLARE @result float;
SELECT @result = cast(val2 as float) / val1 from table;

当两个操作数都是整数时,SQL Server 会进行整数除法。所以,我将它投射到浮动。如果你真的想要十进制,那么使用更好的声明,例如:

DECLARE @result decimal(18, 6);

最后,当您的表格有多行时,您的选择是不明确的。我会建议:

SELECT top 1 @result = cast(val2 as float) / val1 from table;

更好的是,添加一个order by子句,这样您就知道要获得哪一行(除非您知道该表只有一行)。

于 2013-05-22T21:21:26.603 回答
1

您的 DECIMAL 类型应精确声明。根据 val1 和 val2 的数据类型,您可能还需要在计算中对 val1 和 val2 进行强制转换,如下面的代码所示:

DECLARE @result DECIMAL(5,2)
SELECT @result = cast(val2 as decimal(5,2)) / cast(val1 as decimal(5,2)) from table
select @result
于 2013-05-22T21:20:46.970 回答
0

DECLARE @total dec(12,2), @num int SET @total = (SELECT SUM(Salary) FROM Employee)

于 2013-05-22T22:31:44.830 回答