声明新变量时出错

时间:2018-01-07 15:45:20

标签: sql sql-server

我需要创建一个新变量(AGE的平均值),我希望从另一个名为source_table的表中获取该变量。 我写了以下几行但得到了一个错误:

DECLARE @mean_AGE decimal; 
set @mean_AGE = select AVG( AGE ) from source_table;

错误详情:

  

第15行,第15行,第1行,第33行       关键字“select”附近的语法不正确。

我该如何解决这个问题?

更新: 我根据下面的答案使用了这段代码,但仍然是错误。

 DECLARE @mean_AGE decimal; 
 select @mean_AGE = AVG(AGE) from source_table;

 --DELETE temp_table
SELECT TOP 1000 
       [AGE]=iif(AGE='NA',@mean_AGE,AGE)
      INTO temp_table
  FROM [source_table]

But got this error:
Must declare the scalar variable "@mean_AGE".

2 个答案:

答案 0 :(得分:0)

将查询更改为:

select @mean_AGE = AVG(AGE) from source_table;

<小时/> 的更新

删除那些分号

DECLARE @mean_AGE decimal
select @mean_AGE = AVG(AGE) from source_table

;表示批处理脚本的结束,因此之后的语句实际上是新的批处理脚本。

其次,

这个不起作用,因为iif true和false条件中的数据类型必须匹配。

SELECT TOP 1000 
   [AGE]=iif(AGE='NA',@mean_AGE,AGE)
  INTO temp_table
FROM [source_table]

更改为:

SELECT TOP 1000 
   [AGE]=iif(AGE=0,@mean_AGE,AGE)
  INTO temp_table
FROM [source_table]

答案 1 :(得分:0)

请尝试使用此选项。 set @mean_AGE = (select AVG( AGE ) from source_table)