SQL Server变量如何工作?

时间:2017-09-05 06:33:58

标签: sql-server tsql sql-server-2014

我有一张有多名员工薪水的表。 我需要使用派生数(mean和stddev)计算这些员工的得分,并将其作为新列包含在内。

我知道我可以在select语句中执行此操作,但如果我想查看是否可以使用变量。

这样可以动态地进行更改。我是SQL新手,只是想在这里学习东西。

declare @Weight int,
        @weight2 int,
        @Mean int,
        @StdDevn int,
        @Variance int

set @Weight = 30
set @weight2 = (POWER(@weight,2)/100)

SELECT @Mean = AVG(salary) FROM [live].[dbo].[salary]
SELECT @StdDevn = STDEV(salary) FROM [live].[dbo].[salary]

SELECT @Variance = (POWER(@StdDevn,2)/100)
-- I should include some code here so that the above variable are passed to below query
SELECT * FROM [live].[dbo].[salary], (([salary]-@Mean)/@StdDevn)

错误:

  

必须在' - '附近声明变量@Mean,语法不正确。

1 个答案:

答案 0 :(得分:0)

您遇到的问题是如何选择。

变量@Mean已声明,如果最终选择如下所示,它将起作用:

SELECT *, 
       (([salary]-@Mean)/@StdDevn) as SomeOtherCol
FROM [live].[dbo].[salary]

SomeOtherCol随后会显示为结果集的最后一列。