Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在子查询SQL Server中分配局部变量_C#_Sql Server_Sql Server 2008_Vb.net 2010 - Fatal编程技术网

C# 如何在子查询SQL Server中分配局部变量

C# 如何在子查询SQL Server中分配局部变量,c#,sql-server,sql-server-2008,vb.net-2010,C#,Sql Server,Sql Server 2008,Vb.net 2010,我试图在子查询中将一个值设置为variable,但它不起作用 我的问题是: declare @val1 int declare @val2 int select @val1 = sum(column1) ,(select @val2 = (select sum(column2) from table2)) ,(@val1+@val2)Result from table 1 我想做的是为子查询设置@val2,请帮助我 我的意思是在子查询中设置不单独的select语句只需使用3个单独的sel

我试图在子查询中将一个值设置为variable,但它不起作用

我的问题是:

declare @val1 int
declare @val2 int

select @val1 = sum(column1) 
,(select @val2 = (select sum(column2) from table2))
,(@val1+@val2)Result
from table 1 
我想做的是为子查询设置
@val2
,请帮助我
我的意思是在子查询中设置不单独的select语句

只需使用3个单独的select:

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
但不仅仅是一个选择:

不能使用为变量赋值的SELECT语句 与数据检索操作相结合

如果需要一次完成所有选择并返回一个记录集,请不要使用变量,按如下方式操作:

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

您需要向我们展示一些代码,您需要阅读并学习为什么不使用3个单独的
select
语句?我需要多次使用@val2,因此我的查询可能太长。上面的代码只是为了便于理解我的问题,但准确地说,我对assign to val2的查询非常长,因此我不得不多次使用它。我遇到了这个错误当尝试使用第二种方法时,我得到了以下结果:Msg 141,Level 15,State 1,第7行一个SELECT语句,该语句为变量赋值,不能与数据检索操作结合使用。第二种方法效果很好,您尝试将两个SELECT组合成一个,这就是问题所在。如果希望一次处理所有数据,请选择并返回记录集,不要使用变量。