我需要使用查询中的两个值执行计算,然后将其存储到变量中。我想知道如何在SQL中完成此操作。这是我到目前为止所尝试的:
DECLARE @result DECIMAL
SELECT @result = val2 / val1 from table
问题是输出错误。
SELECT @result
Output: 0
如果我不使用变量,则输出正确。
SELECT val2 / val1 from table
Output: 0.0712
我在这里出错的任何想法?
答案 0 :(得分:3)
小数的默认精度为0(参见here)。
试试这个:
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
子句,以便您知道要获得哪一行(除非您知道该表只有一行)。
答案 1 :(得分: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
答案 2 :(得分:0)
DECLARE @total dec(12,2),@ num int SET @total =(SELECT SUM(Salary)FROM Employee)