我们如何在子查询SQL Server中分配局部变量

时间:2014-10-04 06:54:27

标签: c# sql-server sql-server-2008 vb.net-2010

我尝试在子查询中将值设置为变量,但它不起作用。

这是我的问题:

declare @val1 int
declare @val2 int

select @val1 = sum(column1) 
,(select @val2 = (select sum(column2) from table2))
,(@val1+@val2)Result
from table 1 

我想要做的是为子查询设置@val2请帮助我 我的意思是在Sub查询中设置不单独的select语句

1 个答案:

答案 0 :(得分:2)

只需使用3个单独的选择:

select @val1 = sum(column1) from table1 
select @val2 = sum(column2) from table2
select (@val1+@val2) as Result

或者你也可以写2个选择:

 select @val1 = sum(column1), 
        @val2 = (select SUM(column2) from table2)
 from table1
 select (@val1 + @val2) Result

但不只是1选择:

  

为变量赋值的SELECT语句不能是   结合数据检索操作

如果你需要完成一个选择并返回一个记录集,不要使用变量,这样做:

SELECT sum1 + sum2 FROM (
    select sum(column1) as sum1, 
           (select SUM(column2) from table2) as sum2
    from table1
) subquery