Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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
SQL Server-将变量与数据检索操作相结合_Sql_Sql Server_Sql Server 2008_Sql Server 2012 - Fatal编程技术网

SQL Server-将变量与数据检索操作相结合

SQL Server-将变量与数据检索操作相结合,sql,sql-server,sql-server-2008,sql-server-2012,Sql,Sql Server,Sql Server 2008,Sql Server 2012,当我运行下面的代码时,会出现以下错误: 不能使用为变量赋值的SELECT语句 与数据检索操作相结合 请参阅下面我的代码: DECLARE @M1 float DECLARE @M2 float declare @M3 float DECLARE @M4 float DECLARE @M5 float DECLARE @M6 float DECLARE @M7 float DECLARE @M8 float DECLARE @M9 float DECLARE @M10 float DECLARE

当我运行下面的代码时,会出现以下错误:

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

请参阅下面我的代码:

DECLARE @M1 float
DECLARE @M2 float
declare @M3 float
DECLARE @M4 float
DECLARE @M5 float
DECLARE @M6 float
DECLARE @M7 float
DECLARE @M8 float
DECLARE @M9 float
DECLARE @M10 float
DECLARE @M11 float
DECLARE @M12 float
declare @theSum float

set @M1 = 0
set @m2 = 1954286
set @M3 = 1954286
set @M4 = 0
set @M5 = 0
set @M6 = 0
set @M7 = 0
set @M8 = 0
set @M9 = -11725714
set @M10 = 1954286
set @M11 = 1954286
set @theSum = @M1+@M2+@M4+@M5+@M6+@M7+@M8+@M9+@M10+@M11+@M12

SELECT  @theSum,

        @M3   = case 
                --   when M3 = 0 then 0
                     when @M1+@M2+@M4+@M5+@M6+@M7+@M8+@M9+@M10+@M11+@M12 != 0 then @M3-@M2 -- mvc
                else
                    case when @M2 != 0 then @m3-@m2
                         when @M1 != 0 then @m3-@m1
                         when @M12 != 0 then @m3-@m12
                         when @M11 != 0 then @m3-@m11
                         when @M10 != 0 then @m3-@m10
                         when @M9 != 0 then @m3-@m9
                         when @M8 != 0 then @m3-@m8
                         when @M7 != 0 then @m3-@m7
                         when @M6 != 0 then @m3-@m6
                         when @M5 != 0 then @m3-@m5
                         when @M4 != 0 then @m3-@m4

                         else              @m3
                    end 
                end

不需要解释我需要实现什么,我只需要一个示例,在这个示例中,您可以为变量赋值,然后在上面的示例中的case语句中使用它们。任何一个例子都很好。

我认为错误信息非常清楚:查询要么分配变量,要么返回结果集,但不是两者都有

这些是不相容的:

SELECT  @theSum,
        @M3   = case . . .
也许你想要:

SELECT @M3 = case . . . ;

SELECT @theSum, @M3;

我认为错误信息非常清楚:查询要么分配变量,要么返回结果集,但不是两者都返回

这些是不相容的:

SELECT  @theSum,
        @M3   = case . . .
也许你想要:

SELECT @M3 = case . . . ;

SELECT @theSum, @M3;

我明白了,谢谢。有什么方法可以让我重写这行:
当@M1+@M2+@M4+@M5+@M6+@M7+@M8+@M9+@M10+@M11+@M12!=0然后@M3-@M2
@CM2K。只要在@theSum 0时使用
,然后在@M3-@M2时使用
。您在
选择之前设置了
@theSum
,因此可以使用它。我明白了,谢谢。有什么方法可以让我重写这行:
当@M1+@M2+@M4+@M5+@M6+@M7+@M8+@M9+@M10+@M11+@M12!=0然后@M3-@M2
@CM2K。只要在@theSum 0时使用
,然后在@M3-@M2时使用
。您在
选择
之前设置了
@theSum
,因此可以使用它。当您将select语句中的列值赋给局部变量,但并非所有列都赋给相应的局部变量时,可能会出现此类错误的重复。请参阅此链接:当您将SELECT语句中的列值赋给局部变量,但并非所有列都赋给相应的局部变量时,可能会发生此类错误的重复。请参阅此链接: